相关疑难解决方法(0)

将stdout的COPY重定向到bash脚本本身的日志文件

我知道如何将stdout重定向到文件:

exec > foo.log
echo test
Run Code Online (Sandbox Code Playgroud)

这会将'test'放入foo.log文件中.

现在我想将输出重定向到日志文件并将其保存在stdout上

即它可以从脚本外部轻松完成:

script | tee foo.log
Run Code Online (Sandbox Code Playgroud)

但我想在脚本本身内声明它

我试过了

exec | tee foo.log
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

bash shell logging redirect

224
推荐指数
6
解决办法
14万
查看次数

如何配置bash shell脚本慢启动?

我的bash shell需要3-4秒才能启动,而如果我启动它--norc会立即运行.

我开始"分析" /etc/bash.bashrc~/.bashrc通过手动插入return语句和寻求速度改进,但它不是一个定量过程而且效率不高.

如何配置我的bash脚本并查看哪些命令需要花费大部分时间来启动?

bash profiling

119
推荐指数
4
解决办法
2万
查看次数

在Bash中,有没有办法用双引号扩展变量两次?

为了调试我的脚本,我想在每个输出的开头添加内部变量$ FUNCNAME和$ LINENO,所以我知道输出发生在哪个函数和行号上.

foo(){
    local bar="something"
    echo "$FUNCNAME $LINENO: I just set bar to $bar"
}
Run Code Online (Sandbox Code Playgroud)

但是由于会有很多调试输出,如果我可以执行以下操作,它会更清晰:

foo(){
    local trace='$FUNCNAME $LINENO'
    local bar="something"
    echo "$trace: I just set bar to $bar"
}
Run Code Online (Sandbox Code Playgroud)

但上面的字面输出:"$ FUNCNAME $ LINENO:我只是设置了一些东西"我认为这样做是因为双引号只扩展了一次内部的变量.

是否有一种语法上干净的方法在同一行中扩展变量两次?

linux bash parameter-passing variable-expansion parameter-expansion

3
推荐指数
1
解决办法
411
查看次数