我有以下测试脚本:
# test.bash
#----------
{
set -v # Echoes the following 3 parameters
DELAY_MS=2000
SCALING=false
VERBOSE=false
set +v
echo TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
} 2>&1 | tee test.bash.out
它设置 3 个变量并回显一行TEST
输出。因此set -v
,我希望 3 个变量设置能够镜像到stdout和tee
'd to test.bash.out
。但是,它们既不会出现在 Bash 控制台中,也不会出现在test.bash.out
.
他们为什么不出现?
有没有一种简单的方法可以让变量显示在stdout中?
set -v
( 的缩写set -o verbose
)在读取源代码行时打印它们,并且在 shell 可以执行大括号内的任何内容之前,它必须读取所有内容以弄清楚&
末尾是否有重定向或管道或等。(并检查}
某处是否存在匹配,尽管您可能会认为这并不完全必要。)如果您想查看 shell执行的内容,请使用
set -x
(或set -o xtrace
)。