쉘 스크립트의 경우 아래와 같이 4개의 매개변수 값이 포함된 줄이 있는 파일에서 사용자 비밀번호를 가져와야 합니다.
*:*:*:test:test
:
세 번째와 네 번째 열을 개별적으로 가져와(콜론( ) 제외) 다른 변수에 전달하고 싶습니다 .
답변1
다음과 같은 것을 사용할 수 있습니다.
VARIABLE=$(awk -F\: '{print $4}' input_file)
그러면 네 번째 인수가 이름이 지정된 변수에 할당됩니다.VARIABLE
답변2
사용이 명시적으로 강제되지 않는다고 가정하면 awk
Bash 기능을 사용하여 외부 프로세스 사용을 피하세요.
IFS=':' read _ _ myCol3 myCol4 _ < myFile
이는 _
유효한 변수 이름이지만 드롭 포인트로 자주 사용됩니다. 마지막 항목은 _
추가 필드를 가져옵니다.
귀하의 예시 데이터에는 귀하가 말씀하신 대로 4개가 아닌 5개의 값이 있는 것으로 확인되었습니다.
편집: 파일에서 가져온 여러 배열 값을 설정하려면(이 경우 내 passwd 파일의 11번째 줄):
$ myArray+=( $( awk < /etc/passwd '-F:' 'NR == 11 { print $1, $3, $6; }' ) )
$ declare -p myArray
declare -a myArray=([0]="uucp" [1]="10" [2]="/var/spool/uucp")
$ echo "${myArray[1]}"
10