echoとsedを使用して生成されたシェルコマンドを実行するには?

echoとsedを使用して生成されたシェルコマンドを実行するには?

私はこれを試しました:

echo " mv /server/today/logfile1 /nfs/logs/ && gzip /nfs/logs/logfile1" | sed 's|logfile1|logfile2|g'

次のように印刷されます。

mv /server/today/logfile2 /nfs/logs/ && gzip /nfs/logs/logfile2

これはバッシュコマンドです。ただ印刷するのではなく、どのように実行することができますか?

ベストアンサー1

コマンドをシェルにパイプすることで実行できます。

echo "mv ..." | bash

あるいは、それをシェルに引数として渡すこともできます。

bash -c "$(echo "mv ...")"

または、組み込みのbashを使用することもできますeval

eval "$(echo "mv ...")"

しかし、これらのコード生成コマンドはすべて私に少し脆弱に見えます(一部のパスにスペースが含まれるとすぐに失敗します)。

おすすめ記事