bash - 如何在执行时回显 shell 命令

标签 bash shell sh posix trace

在 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),效果和一样稍后在脚本中设置 -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/

相关文章:

linux - 执行程序崩溃后如何重置 tty?

linux - 使用 'rm' 命令删除文件/文件夹时如何启用确认警报?

grep - 如何通过grep查找不同行中包含两个关键字的文件?

java - 如何用sed删除Java项目的注释?

linux - 如何计算 ps 命令输出 bash 脚本中 rss 和 vsz 之间的关系?

linux - 如何使用eval读取变量

xml - 从 xml 文件中剥离注释并漂亮地打印它

python - 在 python 脚本结束后,从 python 调用的 shell 脚本会持续存在吗?

linux - 验证文件记录 shell 脚本

shell - 我如何检查 stdin 是否存在于 PHP ( php-cgi ) 中?