我想限制想要使用特定脚本的用户遵循特定的执行格式,并在不遵循该脚本的情况下在屏幕上打印错误消息。我希望用户仅以以下格式运行我的脚本
$ 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
二进制文件而不是 shell 解释器,并在第一行打印消息,后跟脚本名称。
如果在非 Bash shell 中运行,或者在 POSIX 模式下运行 Bash(与 一样sh
),则BASHOPTS
几乎肯定不会设置该变量,并且 的主体if
将运行,打印一条消息并因错误而退出。
sh
当用作;时,这适用于 4 系列 Bash 版本。对于早期版本,也许if ! [ "$BASH" ] || ! [ "${BASH##*/}" = "bash" ]
是您最好的选择,它检查解释器的路径是否以/bash
.如果您的sh
系统不是 Bash,那么只需检查$BASH
就足够了。
老实说,我认为您可能解决了错误的问题,但这将满足您的要求。