ファイルペアを比較するforループ

ファイルペアを比較するforループ

約30ペアのルータにログインするスクリプトがあります。スクリプトはコマンドを実行して出力をファイルに保存し、次のルーターなどに移動します。

次に、各ルーターペアのファイルに対して「diff」を実行し、次のペアに対して「diff」を実行したいとdiff rtr_1a rtr_1b思いますdiff rtr_2a rtr_2b

複数のdiffステートメントで手動で名前をハードコードせずに特定のファイルのペアのみを比較するように、「diff」にどのように指示しますか?

答え1

すべてのファイルが呼び出されrtr_iartr_ib数字がi1から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

関連情報