在shell脚本中,如何回显所有调用的shell命令并展开任何变量名?例如,给定以下行:
ls $DIRNAME
Run Code Online (Sandbox Code Playgroud)
我希望脚本运行该命令并显示以下内容
ls /full/path/to/some/dir
Run Code Online (Sandbox Code Playgroud)
目的是保存所有调用的shell命令及其参数的日志.也许有更好的方法来生成这样的日志?
有没有人知道我们是否可以set +x在没有打印的情况下用bash 说:
set -x
command
set +x
Run Code Online (Sandbox Code Playgroud)
痕迹
+ command
+ set +x
Run Code Online (Sandbox Code Playgroud)
但它应该打印
+ command
Run Code Online (Sandbox Code Playgroud)
Bash是版本4.1.10(4).这对我来说已经有一段时间了 - 输出混乱了无用的set +x线路,使得跟踪设施没有那么有用.
有没有办法让bash进入一种冗长的模式,这样,当它运行一个shell脚本时,它会在运行它之前回显它将要运行的命令?也就是说,以便它可以看到已运行的命令(以及它们的输出),类似的输出make?
也就是说,如果运行shell脚本就好
echo "Hello, World"
Run Code Online (Sandbox Code Playgroud)
我想要以下输出
echo "Hello, World"
Hello, World
Run Code Online (Sandbox Code Playgroud)
或者,是否可以编写一个调用的bash函数echo_and_run来输出命令然后运行它?
$ echo_and_run echo "Hello, World"
echo "Hello, World"
Hello, World
Run Code Online (Sandbox Code Playgroud)