在脚本开始处发送值

时间:2018-09-17 09:14:35

标签: bash if-statement numbers compare

尝试创建一个bash脚本,该脚本设置一个值供以后在脚本中使用,具体取决于我在运行它时发送的内容;  即./script.sh 24

代码:

### Setting values depending on input
#
#   If value is between 7 and 13
if [[ $1 -le 13 || $1 -ge 7 ]]; then
    #set value to 
    VALUE=7

#   else if value is between 14 and 29
elif [[ $1 -le 29 || $1 -ge 14 ]]; then
    #else set value to
    VALUE=14

# else if value is larger than 30
elif [[ $1 -le 30 ]]; then 
    #Set value to VALUE=30
#else
 #   echo nope
fi

# This is just for showing what's going on
echo "input: $1"; echo "value: $VALUE"

#   Do other stuff here...

但是我无法使其正常工作,无论我在脚本启动时发送什么,它都只能将“值”设置为7。 bash是否以任何特殊顺序读取值?当我使用./script.sh 24运行它时,我给出的是“ value = 7”,但是(在我看来)应该是“ value = 14”

1 个答案:

答案 0 :(得分:2)

在第一次比较中:

$1 -le 13 || $1 -ge 7

您正在检查值是否小于13或大于7。所有自然数均符合以下条件,例如:1小于13,100为avobe 7,而10小于13和avobe7。因此,您始终输入第一分支。

也许您正在寻找大于7且小于13的数字:

$1 -le 13 && $1 -ge 7