약 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}
). 그런 다음 두 파일을 비교합니다.a
$rtra