我有一个执行一系列命令的bash脚本,其中一些涉及重定向。见cyrus-mark-ham-spam。
我希望脚本具有测试模式,其中运行所有运行的命令而不是执行它们。正如你所看到的,我试图通过放置" echo"在测试模式下的每个命令的前面。
不幸的是,这并没有处理重定向 - 任何重定向仍然完成,因此程序在测试模式下运行时会留下大量关于该地方的临时文件。
我已经尝试了各种方法来解决这个问题,例如引用整个命令并将其传递给打印或运行它的函数,但是重定向在测试模式下工作,或者它们不能工作在运行模式。
我认为这之前肯定已经出现了,并且想知道是否有一个已知的解决方案并不涉及每个命令重复使用if TEST围绕该对?
请注意,这不是show commands without executing them的副本,因为这个问题及其答案都不包括重定向(这是这个问题的本质)。
答案 0 :(得分:0)
我发现这不是重复,但没有一般解决方案。您需要单独查看每个命令。
只要命令不使用空格中包含的参数,例如
cmd -a -b -c > filename
,你可以引用它:
echo 'cmd -a -b -c > filename'
但现实生活中的代码更加复杂,当然。