我们说我有一个名为test.sh
的bash脚本,内容如下:
echo Dir: $PWD
当我使用-v
开关调用此脚本时,我可以看到正在执行的命令:
$ bash -v test.sh
echo Dir: $PWD
Dir: /Users/matt
在执行命令之前,有没有办法让它插入命令的变量?我正在寻找输出更像:
echo Dir: /Users/matt
Dir: /Users/matt
答案 0 :(得分:1)
您可以将其硬编码到脚本中。在开头稍微扰乱代码:
#!/bin/bash -ex
echo Dir: $PWD
然后像./script.sh
或as那样执行它,输出将是:
+ echo Dir: /Users/matt
Dir: /Users/matt
如果您想使用-v
,可以手动设置选项#!/bin/bash
if [ $1 = -v ] ; then
set -ex
fi
echo Dir: $PWD
然后像./script.sh
一样执行它,输出将是:
+ echo Dir: /Users/matt
Dir: /Users/matt
您可以按照anubhava的建议将您的脚本标记为bash -ex ./test.sh
。
注意:您可以使用前面bash
的样式执行命令,上面是我的偏好。
参考文献:
答案 1 :(得分:1)
您正在寻找的是bash -x
。
bash -x test.sh
+ echo Dir: /Users/matt
Dir: /Users/matt
-x
将以调试模式运行整个脚本。 在扩展命令之后但在执行命令之前,每个命令的跟踪及其参数都会打印到标准输出。