쉘 스크립트에서 단어 목록을 여러 단어 줄로 생성/파싱

쉘 스크립트에서 단어 목록을 여러 단어 줄로 생성/파싱

한 동료가 데이터 파일에서 개별 단어(사용자 이름) 목록을 생성한 다음 목록을 반복하여(for 루프로) 각 단어에 대해 추가 명령을 실행하는 쉘 스크립트 작성을 도와달라고 요청했습니다. 이 사용자 이름.

스크립트는 예상한 출력을 생성하지 않으며 일부 디버그 에코 문(각각 for 루프가 처리하는 목록과 현재 값을 출력함)을 넣은 후 다음과 같습니다(Become을 사용하면 이는 놀라운 일이 아닌 것 같습니다). 한 grep줄의 여러 단어 문자열이 필요한(?) 것이 아니라 각 단어가 별도의 줄로 분할된 단일 단어의 문자열입니다 .for

(이상하게도 for 루프의 후속 출력 중 일부는 예상대로 매번 "현재" 사용자 이름 값을 사용하는 것처럼 보이지만 다른 부분은 매번 목록의 첫 번째 값을 사용하는 것 같습니다(아마도 목록이 실제로는 여러 값이 포함된 단일 행이 아닌 여러 행으로 구성됩니다.

목록은 다음에 의해 생성됩니다.

OQLIST=`grep "*" ${QCHECK_FILE} | gawk -F " " '{print $1}'`

for 루프 구문은 다음과 같습니다.

for OQUSER in ${OQLIST}; do
    # various stuff
done

스크립트가 실행 중입니다 /bin/sh(실제로 bash해당 시스템에서). 나는 아니에요생각하다bash결함이 있을 수 있지만 실제로 필요한 대로 작동한다면 괜찮을 것입니다.

원하는 방식으로 목록 값을 for 루프에 넣는 방법이 있나요? 아니면 값을 반복하는 더 적절한 방법이 있나요?

관련 정보