"리눅스 sh 명령어로 bash 실행하기"의 두 판 사이의 차이

4번째 줄: 4번째 줄:
* bash 문법으로 작성된 스크립트인데 sh로 돌려 오류가 발생하는 경우가 종종 있다.
* bash 문법으로 작성된 스크립트인데 sh로 돌려 오류가 발생하는 경우가 종종 있다.
* 이것을 적용하면 누가 실행하더라도 일관성 있게 bash로 실행되도록 강제할 수 있다.
* 이것을 적용하면 누가 실행하더라도 일관성 있게 bash로 실행되도록 강제할 수 있다.
==문제상황==
<source lang='console'>
jmnote@zetawiki:~$ cat test.sh
ARR=()
ARR+=("John Smith")
ARR+=("Jane Doe")
for VALUE in "${ARR[@]}"; do echo "[$VALUE]"; done
</source>
<source lang='console'>
jmnote@zetawiki:~$ bash test.sh
[John Smith]
[Jane Doe]
</source>
<source lang='console'>
jmnote@zetawiki:~$ sh test.sh
test.sh: 1: test.sh: Syntax error: "(" unexpected
</source>


==방법==
==방법==

2017년 6월 22일 (목) 21:44 판

1 개요

리눅스 sh 명령어로 bash 실행하기
  • bash 문법으로 작성된 스크립트인데 sh로 돌려 오류가 발생하는 경우가 종종 있다.
  • 이것을 적용하면 누가 실행하더라도 일관성 있게 bash로 실행되도록 강제할 수 있다.

2 문제상황

jmnote@zetawiki:~$ cat test.sh
ARR=()
ARR+=("John Smith")
ARR+=("Jane Doe")
for VALUE in "${ARR[@]}"; do echo "[$VALUE]"; done
jmnote@zetawiki:~$ bash test.sh
[John Smith]
[Jane Doe]
jmnote@zetawiki:~$ sh test.sh
test.sh: 1: test.sh: Syntax error: "(" unexpected

3 방법

#!/bin/bash
if [ -z "$BASH_VERSION" ]; then
    exec bash "$0" "$@"
fi

# 여기부터 실제 스크립트 내용
  • 또는 축약형
#!/bin/bash
if [ -z "$BASH_VERSION" ]; then exec bash "$0" "$@"; fi

# 여기부터 실제 스크립트 내용

4 같이 보기

5 참고 자료

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}