ファイル内のすべてのコマンドを対話式に実行する方法

ファイル内のすべてのコマンドを対話式に実行する方法

100行を超えるテキストファイルがありcommands.txt、各行はシェルコマンドです。

echo foo
...
echo bar

ファイルの各行を実行したいのですが、実行する前に各行を確認したいと思います。また、一部の行には共通コードがあります。

ping <dest_host>

このコマンドに適切な単語を作成する必要があります。私はこれらすべてのコマンドを順番に実行する簡単な方法を見つけようとしています。スクリプトのように実行することはオプションではなく、各行をコピーして貼り付けるのは少し面倒です。

どんなアイデアがありますか?

ベストアンサー1

carefully_run.sh以下を使用してスクリプト名を指定できます。

#!/usr/bin/bash                                                                
                                                                               
while IFS= read -r -u3 cmd
do
    read -e -i "$cmd" -p "$USER $ " cmd
    eval "$cmd"
done 3<$1

それではただ走るだけです。

carefully_run.sh commands.txt

各行に対してcommands.txt作成された行の内容を含むプロンプトが表示されます。その後、必要に応じてそれを確認して変更し、Enterキーを押すとコマンドが実行されます。これにより、次の内容が表示されます。

メモ:

commands.txtこのような行を含めると

foo=bar

fooコマンドを実行すると、値は保持されますが、commands.txt最後のコマンド以降は失われます。これを保存する必要があり、実行している場合は、次のように実行してこれを行うbashことができます。

source carefully_run.sh commands.txt

変える

./carefully_run.sh commands.txt

おすすめ記事