bash + 如何验证字符串是否为布尔值
bash + how to validate if string is boolean
在我的 bash 脚本中,我执行了以下语法以验证 $Val 是否为布尔值
if [[ $Val != True ]] && [[ $Val != False ]];then
echo "sorry but Val isn't a boolean"
exit 1
else
echo "good state $Val is a boolean"
fi
还有其他更优雅的想法吗?
所以如果 $Val 是 True
或 False
,那么它的状态很好
如果不是,那么我们 exit 1
当我使用 "[[ $Val != @(True|False) ]]"
时,
然后在我的 python 魅力编辑器中我得到:
使用扩展的 glob:
if [[ $Val != @(True|False) ]]; then
echo "sorry but Val isn't a boolean" >&2
exit 1
fi
# continue with good value of Val
旧版本的 bash
可能要求您首先使用 shopt -s extglob
显式启用扩展 glob,但较新版本暂时启用 [[ ... ]]
.
中的选项
标准 shell case
构造可用于此。它可以将给定的字符串与一个或多个 shell 模式匹配:
case $Val in
True | False) echo "good state $Val is a boolean";;
*) echo "sorry but Val isn't a boolean"; exit 1;;
esac >&2
同一案例的替代模式由 |
分隔。模式中未加引号的前导或尾随空白将被忽略。
案例列表可能为空。所以如果你只是想在匹配“True”或“False”失败后退出,你可以这样做:
case $Val in
True | False) ;;
*) echo "sorry but Val isn't a boolean"; exit 1;;
esac >&2
在我的 bash 脚本中,我执行了以下语法以验证 $Val 是否为布尔值
if [[ $Val != True ]] && [[ $Val != False ]];then
echo "sorry but Val isn't a boolean"
exit 1
else
echo "good state $Val is a boolean"
fi
还有其他更优雅的想法吗?
所以如果 $Val 是 True
或 False
,那么它的状态很好
如果不是,那么我们 exit 1
当我使用 "[[ $Val != @(True|False) ]]"
时,
然后在我的 python 魅力编辑器中我得到:
使用扩展的 glob:
if [[ $Val != @(True|False) ]]; then
echo "sorry but Val isn't a boolean" >&2
exit 1
fi
# continue with good value of Val
旧版本的 bash
可能要求您首先使用 shopt -s extglob
显式启用扩展 glob,但较新版本暂时启用 [[ ... ]]
.
标准 shell case
构造可用于此。它可以将给定的字符串与一个或多个 shell 模式匹配:
case $Val in
True | False) echo "good state $Val is a boolean";;
*) echo "sorry but Val isn't a boolean"; exit 1;;
esac >&2
同一案例的替代模式由 |
分隔。模式中未加引号的前导或尾随空白将被忽略。
案例列表可能为空。所以如果你只是想在匹配“True”或“False”失败后退出,你可以这样做:
case $Val in
True | False) ;;
*) echo "sorry but Val isn't a boolean"; exit 1;;
esac >&2