터미널에서 명령을 실행하면 배열이 할당됩니다.
$ FILES=($(ls ~/Desktop/TEST/))
$ echo ${FILES[@]}
file1.txt file2.txt file3.txt
하지만 터미널을 닫고 쉘 스크립트에서 실행하면 빈 줄이 나타납니다.
$ ./TEST.txt
$ echo ${FILES[@]}
$
테스트해 보니 echo $?
true/ 가 반환됩니다 0
.
무슨 일이 일어나고 있는지 모르시나요?
답변1
이는 echo
명령이 스크립트의 일부가 아니기 때문입니다. 스크립트는 서브셸에서 실행되며 스크립트가 끝나면 FILES
변수를 더 이상 사용할 수 없습니다. 이 FILES
변수를 현재 쉘에서 사용할 수 있게 하려면 다음을 사용하십시오.
$ source ./TEST.txt
$ echo ${FILES[@]}