2013-01-17 1 views
1

저는 저에게 새로운 개념 인 bash 스크립트의 연관 배열에 어려움을 겪고 있습니다. 안녕하세요 1) 연관 배열의 키에 값 세계를 할당 MYID에 MYID 2)라고 선언bash 스크립트는 연관 배열에 변수를 할당합니다.

#!/bin/bash 
declare -A MYID 
MYID[hello]=world 
tac /home/user/filename | while read -r line; do 
    MYID[hello]=me 
done 
echo "${MYID[hello]}" 
exit 

이 내가 그것을 할 것이라고 생각 것입니다 : 여기

내 코드의 버전을 단순화 3) 라인 4)는 선이 MYID 배열 5) 밖으로 "나"를 인쇄하고 종료

에 키 안녕하세요 날을 지정 읽기 모든 시간 뒤로 라인 파일/홈/사용자/파일 이름을 읽어 무엇 그것은 "나"대신에 "세계"를 프린트하는 것입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

2

파이프가 서브 쉘을 작성하므로, while 루프에서 MYID에 대한 변경 사항은 해당 서브 쉘에만 존재합니다. 대신 다음을 시도하십시오.

while read -r line; do 
    MYID[hello]=me 
done < <(tac /home/user/filename) 
+0

감사합니다. 이 사실을 배울 점 목록에 추가하겠습니다. – user1464409