bash:如何进行三重检查?

时间:2011-10-31 12:33:38

标签: bash

我想检查枯萎选项用户给脚本是允许的其中一个。我读出的最好的手册是:

if [ $format = "flac" ] -o [ $format = "wav" ] -o [ $format = "ape" ]; then
    usage
    exit 1
fi

它不起作用。也许它缺乏某种分组。

实际上我犯了一个逻辑错误:检查给出的枯萎选项是:flac / wv / ape之一,必须写一个

if ! [ $format = "flac" -o $format = "wv" -o $format = "ape" ]; then

所以这解决了它(Thaks to ziu)。另一种检查选项的方法是:

case $format in
    "flac");;
    "wv");;
    "ape");;
    *)
        usage
        exit 1
esac

这也有效。

3 个答案:

答案 0 :(得分:2)

将所有内容保存在同一组中:

if [ $format = "flac" -o $format = "wav" -o $format = "ape" ]; then

答案 1 :(得分:1)

您也可以尝试:

if [ $format = "flac" ] || [ $format = "wav" ] || [ $format = "ape" ]; then
     usage
     exit 1
fi

答案 2 :(得分:1)

另一种方式:

if [[ ! $format =~ "flac|wav|ape" ]]; then usage; exit 1; fi

编辑:逻辑已经改变

或者,您可以取消if并使用||门,如下所示:

[[ $format =~ "flac|wav|ape" ]] || { usage; exit 1; }

回归真实的问题看起来更容易。