파일 쌍을 비교하는 for 루프

파일 쌍을 비교하는 for 루프

약 30쌍의 라우터에 로그인하는 스크립트가 있습니다. 스크립트는 명령을 실행하고 출력을 파일에 저장한 후 다음 라우터 등으로 이동합니다.

이제 각 라우터 쌍의 파일에 대해 "diff"를 실행하고 다음 쌍에 대해 "diff"를 실행하고 diff rtr_1a rtr_1b싶습니다 diff rtr_2a rtr_2b.

여러 diff 문에서 이름을 수동으로 하드코딩하지 않고 특정 파일 쌍만 비교하도록 "diff"에 어떻게 지시합니까?

답변1

모든 파일이 호출 rtr_ia되고 rtr_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}). 그런 다음 두 파일을 비교합니다.a$rtra

관련 정보