在 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
),效果和一样稍后在脚本中设置 -x
(或 -v
)。
以上也适用于/bin/sh
。
请参阅 set
attributes 上的 bash-hackers' wiki| , 和 debugging .
$ 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/