我发现一个脚本使用这个“技巧”来实现运行和打印命令之间的切换:
echo_prefix="echo"
rm_cmd="rm file1 file2"
$echo_prefix $rm_cmd
这允许用户试运行脚本,然后设置echo_prefix=""
为有效运行脚本。
尽管如此,我还是发现了许多与通配符和引用相关的问题,因此我正在寻找一种不同的、更强大的方法。
答案1
最好的方法是使用| bash
.
所以基本上,你只需回显你的命令即可。在我的示例中rm file1 file2
,然后| bash
将运行输出。
[ws] user ~ >echo "rm file1 file2"
rm file1 file2
[ws] user ~ >echo "rm file1 file2" | bash
rm: cannot remove ‘file1’: No such file or directory
rm: cannot remove ‘file2’: No such file or directory
@Kusalananda,如果文件名中有空格,则只需调整第一部分即可在 echo 命令中保留引号:
echo "rm \"file with space\"" | bash