Bash 巴什:如何进行三重检查?
我想检查用户给脚本的wither选项是否是允许的选项之一。我在阅读手册时得出的最好结论是:Bash 巴什:如何进行三重检查?,bash,Bash,我想检查用户给脚本的wither选项是否是允许的选项之一。我在阅读手册时得出的最好结论是: if [ $format = "flac" ] -o [ $format = "wav" ] -o [ $format = "ape" ]; then usage exit 1 fi 但它不起作用。也许它缺少某种分组 实际上,我犯了一个逻辑错误:要检查给定的wither选项是:flac/wv/ape,必须编写 if ! [ $format = "flac" -o $format = "w
if [ $format = "flac" ] -o [ $format = "wav" ] -o [ $format = "ape" ]; then
usage
exit 1
fi
但它不起作用。也许它缺少某种分组
实际上,我犯了一个逻辑错误:要检查给定的wither选项是:flac/wv/ape,必须编写
if ! [ $format = "flac" -o $format = "wv" -o $format = "ape" ]; then
这就解决了问题(从萨克斯到齐奥)。检查该选项的另一种方法是:
case $format in
"flac");;
"wv");;
"ape");;
*)
usage
exit 1
esac
这同样有效。将所有内容放在同一组中:
if [ $format = "flac" -o $format = "wav" -o $format = "ape" ]; then
将所有内容保持在同一组中:
if [ $format = "flac" -o $format = "wav" -o $format = "ape" ]; then
您也可以尝试:
if [ $format = "flac" ] || [ $format = "wav" ] || [ $format = "ape" ]; then
usage
exit 1
fi
您也可以尝试:
if [ $format = "flac" ] || [ $format = "wav" ] || [ $format = "ape" ]; then
usage
exit 1
fi
还有另一种方式:
if [[ ! $format =~ "flac|wav|ape" ]]; then usage; exit 1; fi
编辑:逻辑已更改
或者,您可以取消if
,使用|
门,如下所示:
[[ $format =~ "flac|wav|ape" ]] || { usage; exit 1; }
返回真实的问题看起来更容易看清楚。另一种方式:
if [[ ! $format =~ "flac|wav|ape" ]]; then usage; exit 1; fi
编辑:逻辑已更改
或者,您可以取消if
,使用|
门,如下所示:
[[ $format =~ "flac|wav|ape" ]] || { usage; exit 1; }
返回真值的问题看起来更容易看。我想检查一下你的方式,但因为我犯了一个逻辑错误-我实际上需要
if![$format=“flac”-o$format=“wv”-o$format=“ape”];然后
-我看不到检查的方法。但是无论如何谢谢。我想检查一下你的方式,但是因为我犯了一个逻辑错误-我实际上需要if![$format=“flac”-o$format=“wv”-o$format=“ape”];然后
-我看不到检查的方法。但无论如何,谢谢你。不起作用-我试过了。你有没有考虑到必须有if![$format=“flac”-o$format=“wv”-o$format=“ape”];然后
notif[$format=“flac”]-o[$format=“wav”]-o[$format=“ape”];然后
——就像我原来想的那样`不行-我试过了。你有没有考虑到必须有if![$format=“flac”-o$format=“wv”-o$format=“ape”];然后
notif[$format=“flac”]-o[$format=“wav”]-o[$format=“ape”];然后
——就像我原来想的那样`