특정 스크립트를 사용하려는 사용자가 특정 실행 형식을 따르도록 제한하고, 스크립트를 따르지 않으면 화면에 오류 메시지를 출력하고 싶습니다. 사용자가 다음 형식으로만 스크립트를 실행하기를 원합니다.
$ bash script.sh
다른 형식으로 실행하려고 하면
$ sh script.sh
$./script.sh
스크립트 실행 방법에 대한 지침이 포함된 오류 메시지를 인쇄하고 싶습니다.
답변1
#!/bin/echo Run this script with: bash
if ! [ "$BASHOPTS" ]
then
echo Run this script as bash script.sh
exit 1
fi
... rest of script here ...
이는 쉘 인터프리터 대신 바이너리를 ./script.sh
호출하고 첫 번째 줄에 메시지를 인쇄한 후 스크립트 이름을 인쇄 하는 (유용한) 실행 사용을 방지합니다 .echo
Bash가 아닌 쉘에서 실행하거나 Bash를 POSIX 모드에서 실행하는 경우(Bash의 경우와 마찬가지로 sh
) BASHOPTS
이 변수는 거의 확실하게 설정되지 않으며 본체가 if
실행되고 메시지를 인쇄하며 오류와 함께 종료됩니다.
sh
;로 사용하면 Series 4 Bash 버전에서 작동합니다. 이전 버전의 경우 아마도 if ! [ "$BASH" ] || ! [ "${BASH##*/}" = "bash" ]
가장 좋은 방법은 인터프리터 경로가 로 시작하는지 확인하는 것입니다 /bash
. sh
시스템이 Bash가 아닌 경우 확인하는 것만으로도 $BASH
충분합니다.
솔직히 말해서 당신은 아마도 잘못된 문제를 해결하고 있다고 생각합니다. 그러나 이것은 당신이 원하는 것을 해결할 것입니다.