Linux,Unix,BSD

[shell] Bad Substitution(bash)

채윤아빠 2022. 6. 23. 08:26
728x90
반응형

개요

쉘 스크립트를 실행했을 때 다음과 같은 오류가 발생하였습니다.

pi@raspberrypi:~ $ sudo /opt/hbesthee/bin/setup-rwap.sh
20220719T20:01:36 MAC_ADDR=e4:5f:01:89:08:30
/opt/hbesthee/bin/setup-rwap.sh: 20: /opt/hbesthee/bin/setup-rwap.sh: Bad substitution

해결방법

오류가 발생한 코드는 다음과 같습니다.

#!/bin/bash

SSID_SURFIX=${MAC_ADDR:(-5)}
SSID_SURFIX=${SSID_SURFIX/:/}

일반 쉘(sh)에서는 지원하지 않는 "bash" 쉘 방식으로 문자열 잘라내기를 하고 있는 코드입니다.

"sudo" 명령로 실행하면, "#!/bin/bash"로 명시한 것과 관계없이 "sh"로 실행이 되는지 위와 같은 오류가 발생합니다.

해결방법은 단순하게 스크립트 실행할 때, 스크립트 파일 앞에 "bash" 쉘을 추가하여 명시적으로 "bash" 스크립트라고 지정해 주면 됩니다.

pi@raspberrypi:~ $ sudo bash /opt/hbesthee/bin/setup-rwap.sh

참고자료