파일의 여러 값을 매개변수로 전달해야 함

파일의 여러 값을 매개변수로 전달해야 함

파일에는 다음이 포함됩니다.

Firstname=ABC
Lastname=XYZ
Country=USA

Firstname=DEF
Lastname=UVW
Country=UK

Firstname, lastname및 를 스크립트의 함수에 매개변수로 전달 Country하고 두 번째 그룹에 대해 동일한 작업을 반복해야 합니다.

함수 사용법: 그 중 하나라도 누락된 경우 Country=종료해야 하며 3개의 매개변수 모두 값이 있으면 명령을 실행해야 합니다.

답변1

어쩌면 이런 것을 시도해 볼 수도 있을까요?

awk 'BEGIN{RS="\n\n"}
     {
         split($1, a, "="); fname = a[2]; 
         split($2, b, "="); lname = b[2];
         split($3, c, "="); country = c[2];
         if (fname != "" && lname != "" && country != "") {
             command = "/path/to/your/script.sh "fname" "lname" "country;
             system(command);
         }
      }' input_file.txt

/path/to/your/script교체하여 시도했는데 echo필드가 올바른 순서로 표시됩니다.

특정 이름, 성, 국가 조합에 대한 필드가 누락된 경우 해당 특정 조합에 대해 명령이 실행되지 않고 다음 조합으로 바로 이동합니다.

awk 명령이 빈 필드를 발견할 때 0이 아닌 반환 코드로 종료하고 다음 조합에서 명령을 실행하지 않으려면 다음을 시도하십시오.

awk 'BEGIN{RS="\n\n"}
     {
         split($1, a, "="); fname = a[2]; 
         split($2, b, "="); lname = b[2];
         split($3, c, "="); country = c[2];
         if (fname != "" && lname != "" && country != "") {
             command = "/path/to/your/script.sh "fname" "lname" "country;
             system(command);
         } else {
             print "error: empty field in input file !";
             exit 1
         }
      }' input_file.txt

그런 다음 쉘 변수에서 반환 코드를 테스트할 수 있습니다 $?. 0이 아닌 경우 입력 파일 어딘가에 필드가 누락되고 누락된 필드 다음에 오는 모든 명령이 실행되지 않습니다.

관련 정보