約30ペアのルータにログインするスクリプトがあります。スクリプトはコマンドを実行して出力をファイルに保存し、次のルーターなどに移動します。
次に、各ルーターペアのファイルに対して「diff」を実行し、次のペアに対して「diff」を実行したいとdiff rtr_1a rtr_1b
思いますdiff rtr_2a rtr_2b
。
複数のdiffステートメントで手動で名前をハードコードせずに特定のファイルのペアのみを比較するように、「diff」にどのように指示しますか?
答え1
すべてのファイルが呼び出されrtr_ia
、rtr_ib
数字がi
1から30の間であるとします。
#!/bin/bash
for (( i = 1; i <= 30; ++i )); do
diff "rtr_${i}a" "rtr_${i}b"
done
違いをファイルに保存するには:
#!/bin/bash
for (( i = 1; i <= 30; ++i )); do
diff "rtr_${i}a" "rtr_${i}b" >"rtr_${i}.diff"
done
コメント後:
#!/bin/bash
for rtra in *rtr*a; do
rtrb="${rtra%a}b"
diff -- "$rtra" "$rtrb"
done
または
#!/bin/bash
for rtra in *rtr*a; do
rtrb="${rtra%a}b"
diff -- "$rtra" "$rtrb" >"${rtra}_${rtrb}.diff"
done
...ファイルに保存します。
これにより、すべてのファイル名が一致し、prefix-rtrNa
各ファイル名に対応するファイル名が生成されますprefix-rtrNb
(末尾の値は値から削除されます${rtra%a}
)。次に、2つのファイルを比較します。a
$rtra