在shell脚本中:echo shell命令执行时
在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
) set -x
为相同的效果。
以上也适用于/bin/sh
。
http://www.faqs.org/docs/abs/HTML/options.html
$ cat shl
#!/bin/bash
DIR=/tmp/so
ls $DIR
$ bash -x shl
+ DIR=/tmp/so
+ ls /tmp/so
$
set -x
会给你你想要的。
以下是一个示例shell脚本示例:
#!/bin/bash
set -x #echo on
ls $PWD
这将扩展所有变量并在输出命令之前打印完整命令。
输出:
+ ls /home/user/
file1.txt file2.txt
你也可以在你的脚本中通过将它们包装在set -x
和set +x
来切换这些行
#!/bin/bash
...
if [[ ! -e $OUT_FILE ]];
then
echo "grabbing $URL"
set -x
curl --fail --noproxy $SERV -s -S $URL -o $OUT_FILE
set +x
fi
链接地址: http://www.djcxy.com/p/2891.html
上一篇: In a shell script: echo shell commands as they are executed