저는 UNIX 스크립트에서 배열이 어떻게 작동하는지 알아보기 위해 테스트 스크립트를 작성 중입니다.
#! /bin/bash
arr=(one two three)
echo "${arr[0]}"
위의 내용은 배열의 0번째 위치인 "1"을 인쇄할 것으로 예상했습니다.
하지만 실행하면 bash test.sh
출력이 다음과 같이 인쇄됩니다.
(one two three)
변수를 문자열로 취급한다고 생각합니다. (저도 시도해 보았 sh test.sh
으나 성공하지 못했습니다.)
declare -a arr
다음과 같은 진술을 추가하려고 하면not a valid identifier
uname -a
Linux XXXXXXX 2.6.32-754.31.1.el6.x86_64 #1 SMP Mon Jun 15 08:08:31 EDT 2020 x86_64 x86_64 x86_64 GNU/Linux
여기에 도움이 필요합니다. 감사해요.
답변1
귀하의 의견에 감사드립니다. 이 댓글은 저를 다르게 생각하게 만들었습니다. 문제는 EOL 변환입니다. .sh 파일은 Windows에서 생성되며 "CR 및 LF"의 EOL을 갖습니다. 나는 notepad++를 사용하여 UNIX 스타일 EOL(단지 "LF")로 변환했는데 문제가 사라졌습니다.