【问题标题】:Check if parameter is value X or value Y [duplicate]检查参数是值 X 还是值 Y [重复]
【发布时间】:2017-06-11 01:41:33
【问题描述】:

我想检查我的 bash 脚本,如果变量等于值 1 或等于值 2。

我不想使用这样的东西,因为当变量等于 1 或 2 时,“if true statements”是相同的(一些大的回显文本)。我想避免数据冗余。

if [ $1 == 1 ] ; then echo number 1 ; else
if [ $1 == 2 ] ; then echo number 2 ; fi

更多类似

if [ $1 == 1 OR 2 ] ; then echo number 1 or 2 ; fi

【问题讨论】:

标签: linux bash if-statement parameters equality


【解决方案1】:

由于您要比较整数值,请使用bash 算术运算符(()),作为

(( $1 == 1 || $1 == 2 )) && echo "number 1 or 2"

用于在bash 中使用regex 运算符处理字符串

test="dude"
if [[ "$test" =~ ^(dude|coolDude)$ ]]; then echo "Dude Anyway"; fi
# literally means match test against either of words separated by | as a whole
# and not allow for sub-string matches.

【讨论】:

【解决方案2】:

可能最容易扩展的选项是case 语句:

case $1 in
    [12])
        echo "number $1"
esac

模式[12] 匹配12。对于更大的范围,您可以使用[1-5],或更复杂的模式(如[1-9]|[1-9][0-9])来匹配从199 的任何数字。

当您有多个案例时,您应该用;; 分隔每个案例。

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 2018-11-18
    • 1970-01-01
    • 2017-11-25
    • 2011-09-21
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多