在我的脚本中有以下内容:
DEBUG="false"
while getopts ":d:" opt; do
case $opt in
d)
$BIN_ECHO -e "DEBUG MODE ENABLED WITH $OPTARG" >&2
DEBUG="YES"
;;
\?)
$BIN_ECHO -e "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
$BIN_ECHO -e "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
但是,每次我运行它时,DEBUG=false 似乎都没有得到优先考虑。
我有这个例子:
if [ $DEBUG=="YES" ]; then
$BIN_ECHO -e "SETTING LOCATION TO /USR/SRC"
fi
cd /usr/src
即使我不在脚本上使用 -d,它仍然会像在 Debug模式下一样运行。知道为什么吗?
最佳答案
这个 if [ $DEBUG=="YES"];那么
是不正确的。 ==
两边需要空格。
像这样 if [ $DEBUG == "YES"];然后
。
你把所有东西混在一起的方式意味着 [
只看到 一个 参数和 [
/test< 的一个参数
被解释为 [ -n word ]
正在测试非空字符串(==YES
与 $ 的值无关DEBUG
是。
综上所述,您没有在任何地方使用 -d
的参数,您可能应该选择 false
/true
之一或 yes
/no
作为您的配对。
关于linux - 开关不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26549558/