在 shell 脚本中,如何回显所有调用的 shell 命令并扩展任何变量名称?
例如,给定以下行:
ls $DIRNAME
我希望脚本运行命令并显示以下内容
ls /full/path/to/some/dir
目的是保存所有调用的 shell 命令及其参数的日志。也许有更好的方法来生成这样的日志?
最佳答案
set -x
或 set -o xtrace
扩展变量并在行前打印一点 + 符号。set -v
或 set -o verbose
在打印前不会扩展变量。
使用 set +x
和 set +v
关闭上述设置。
在脚本的第一行,可以将 #!/bin/sh -x
(或 -v
)与 set -x
(或 -v
后面的脚本)具有相同的效果。
以上也适用于 /bin/sh
。
请参阅 set
attributes 和 debugging 上的 bash-hackers 维基。
$ cat shl
#!/bin/bash
DIR=/tmp/so
ls $DIR
$ bash -x shl
+ DIR=/tmp/so
+ ls /tmp/so
$
关于bash - 如何在执行时回显 shell 命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2853803/