티스토리 뷰


쉘스크립트의 종류는 다양한데 그중 bash와 ash를 뽑아봅니다.


이야기 하고자하는 내용은 두 스크립트의 차이입니다. 보통 ash는 busybox를 통해 사용가능한데요, 지금 본인이 개발하고 있는 스크립트가 어떤 쉘로 실행되는지 (필히)확인이 필요합니다. 이유는 동일해보이는 스크립트지만 지원가능한 문법이 다르기 때문입니다.


예를들면 아래와 같은 배열 (우리에게 친숙한) 을 bash에서 사용합니다.

daemon_list=("oops" "test") 

참조는 아래처럼 하겠지요.

echo ${daemon_list[@]}

하지만 이 내용이 ash로 실행되면 바로 아래와 같은 syntax error를 출력하고 실행되지 않습니다. (ash는 bash스타일의 배열을 지원하지 않습니다.)

./oops: line 3: syntax error: unexpected "("

ash에서의 배열 형태는 아래와 같기 때문이지요.

daemon_list="oops" "test"

참조하는 형태도 일단 아래와 같이 수행합니다.

for att in $daemon_list                                                                                                  
do                                                                                                             
        echo att                                                                                             
done

스크립트 언어는 보통 확장성이 좋아서 자유로운 코딩 스타일을 추구해왔는데, 위와 같은 문제를 야기시킬수 있으므로 주의가 필요하겠네요.



'개발 > Shell Script' 카테고리의 다른 글

[sh] 알아두면 유용한 $()  (0) 2014.04.29
[sh] 함수구현  (0) 2014.04.17
"bash" vs "ash" 서로 다른 배열 스타일  (0) 2014.04.17
[sh] help() 만들기  (0) 2014.02.17
[sh] ssh-keygen 자동생성 (expect)  (0) 2014.02.12
[sh] awk 내장함수 substr  (0) 2014.01.02
댓글
댓글쓰기 폼