この「トリック」を使用して、コマンドの実行と印刷を切り替えるスクリプトを見つけました。
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