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