Bash:如何创建显示命令而不是执行命令的测试模式

时间:2018-02-04 12:38:26

标签: bash echo io-redirection

我有一个执行一系列命令的bash脚本,其中一些涉及重定向。见cyrus-mark-ham-spam

我希望脚本具有测试模式,其中运行所有运行的命令而不是执行它们。正如你所看到的,我试图通过放置" echo"在测试模式下的每个命令的前面。

不幸的是,这并没有处理重定向 - 任何重定向仍然完成,因此程序在测试模式下运行时会留下大量关于该地方的临时文件。

我已经尝试了各种方法来解决这个问题,例如引用整个命令并将其传递给打印或运行它的函数,但是重定向在测试模式下工作,或者它们不能工作在运行模式。

我认为这之前肯定已经出现了,并且想知道是否有一个已知的解决方案并不涉及每个命令重复使用if TEST围绕该对?

请注意,这不是show commands without executing them的副本,因为这个问题及其答案都不包括重定向(这是这个问题的本质)。

1 个答案:

答案 0 :(得分:0)

我发现这不是重复,但没有一般解决方案。您需要单独查看每个命令。

只要命令不使用空格中包含的参数,例如

cmd -a -b -c > filename

,你可以引用它:

echo 'cmd -a -b -c > filename'

但现实生活中的代码更加复杂,当然。