for/while 루프에 입력된 두 파일을 구문 분석합니다.

for/while 루프에 입력된 두 파일을 구문 분석합니다.

두 개의 다른 값을 가진 두 개의 파일이 있습니다. 두 파일의 입력이 필요한 루프에서 명령을 실행하고 싶습니다. 간단하게 설명하기 위해 예를 들어 보겠습니다.

파일 1의 내용:

google  
yahoo

파일 2의 내용:

mail  
messenger

다음 출력이 필요합니다

google is good in mail  
yahoo is good in messenger

for/while 루프를 사용하여 동일한 결과를 어떻게 얻을 수 있나요?

다음을 수행하려면 스크립트가 필요합니다.

$File1은 File1의 첫 번째 결과를 바꿔야 하고, $File2는 File2의 첫 번째 결과를 바꿔야 합니다.

/usr/local/psa/bin/domain --도메인 만들기 $File1 -mail_service true -service-plan '기본 도메인' -ip 1.2.3.4 -login $File2 -passwd "abcghth"

답변1

-uBash의 표준 절차는 다음 스위치를 사용하여 다른 파일 설명자에서 읽는 것입니다 read.

while IFS= read -r -u3 l1 && IFS= read -r -u4 l2; do
    printf '%s is good in %s\n' "$l1" "$l2"
done 3<file1 4<file2

답변2

While loop가능하지만 쉬운 방법이 있습니다

paste File{1,2} -d% | sed 's/%/ is good in /'

- %어떤 기호든 가능

하지만 반복을 고집한다면 제공된 루프를 사용할 수 있습니다.gniourf_gniourf아니면 그냥 바보 같은 밑줄

mapfile -t A < File1
mapfile -t B < File2

if [ ${#A[*]} -lt ${#B[*]} ]
then
  L=${#A[*]}
else
  L=${#B[*]}
fi

n=-1
while [ $[++n] -lt $L ]
do
  printf "%s is good in %s\n" "${A[$n]}" "${B[$n]}"
done

관련 정보