![sh에는 오류가 표시되지만 bash에는 오류가 표시되지 않는 이유는 무엇입니까?](https://linux55.com/image/28603/sh%EC%97%90%EB%8A%94%20%EC%98%A4%EB%A5%98%EA%B0%80%20%ED%91%9C%EC%8B%9C%EB%90%98%EC%A7%80%EB%A7%8C%20bash%EC%97%90%EB%8A%94%20%EC%98%A4%EB%A5%98%EA%B0%80%20%ED%91%9C%EC%8B%9C%EB%90%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
다음 스크립트가 "예기치 않은 연산자" 메시지를 표시 sh
하고 bash
.
#!/bin/sh
if [ $UID -ne 0 ]
then
echo "You must be root."
exit 1
else
echo "Open sesame."
exit 0
fi
답변1
모든 쉘이 변수를 정의하는 것은 아닙니다 UID
. 이것은 bash 및 zsh 기능일 뿐입니다. 다른 셸에서는 UID
이 변수가 정의되지 않으므로 테스트 명령이 [ -ne 0 ]
구문 오류로 확장됩니다.
사용자 ID를 얻는 편리한 방법은 다음을 사용하는 것입니다.id
유용.
if [ "$(id -u)" -ne 0 ]; then …