Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 巴什:如何进行三重检查?_Bash - Fatal编程技术网

Bash 巴什:如何进行三重检查?

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

我想检查用户给脚本的wither选项是否是允许的选项之一。我在阅读手册时得出的最好结论是:

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”];然后
not
if[$format=“flac”]-o[$format=“wav”]-o[$format=“ape”];然后
——就像我原来想的那样`不行-我试过了。你有没有考虑到必须有
if![$format=“flac”-o$format=“wv”-o$format=“ape”];然后
not
if[$format=“flac”]-o[$format=“wav”]-o[$format=“ape”];然后
——就像我原来想的那样`