実行コマンドと印刷コマンドの間で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

関連情報