티스토리 뷰


쉘스크립트의 종류는 다양한데 그중 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
댓글
댓글쓰기 폼