我有以下测试脚本:
# 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 个变量设置能够镜像到标准输出并tee
愿意test.bash.out
。但是,它们既不会出现在 Bash 控制台中,也不会出现在test.bash.out
.
他们为什么不出现?
有没有一种简单的方法可以让变量显示在标准输出?
答案1
set -v
( 的缩写set -o verbose
)打印源代码行当他们被读到时,并且在 shell 可以执行大括号内的任何内容之前,它必须读取所有内容以找出&
末尾是否有重定向或管道或等。 (并检查}
某处是否存在匹配,尽管您可能会认为这并不完全必要。)
如果你想看看外壳是什么执行,使用set -x
( 或set -o xtrace
) 代替。