在运行命令和打印命令之间切换 bash 脚本

在运行命令和打印命令之间切换 bash 脚本

我发现一个脚本使用这个“技巧”来实现运行和打印命令之间的切换:

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

相关内容