在 shell 脚本中,如何回显所有调用的 shell 命令并扩展任何变量名称?

例如,给定以下行:

ls $DIRNAME

我希望脚本运行命令并显示以下内容
ls /full/path/to/some/dir

目的是保存所有调用的 shell 命令及其参数的日志。也许有更好的方法来生成这样的日志?

最佳答案

set -xset -o xtrace 扩展变量并在行前打印一点 + 符号。
set -vset -o verbose 在打印前不会扩展变量。

使用 set +xset +v 关闭上述设置。

在脚本的第一行,可以将 #!/bin/sh -x (或 -v )与 set -x (或 -v 后面的脚本)具有相同的效果。

以上也适用于 /bin/sh

请参阅 set attributesdebugging 上的 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/

10-16 09:23