Linux,Unix,BSD
[shell] Bad Substitution(bash)
채윤아빠
2022. 6. 23. 08:26
개요
쉘 스크립트를 실행했을 때 다음과 같은 오류가 발생하였습니다.
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
참고자료
- "[colab] bash: Bad Substitution":https://realist.tistory.com/10
728x90
반응형