如何在bash中使用比较

如何在bash中使用比较,bash,Bash,我试图在bash中使用比较,但就是无法使其工作 #!/bin/bash str="75.00 W, 170.00 W" function str_check { pow_array=() regexp='([0-9]+)\.[0-9]+[[:space:]]W,[[:space:]]([0-9]+)\.[0-9]+[[:space:]]W' [[ $str =~ $regexp ]] && for (( i = 0; i < 3;

我试图在bash中使用比较,但就是无法使其工作

#!/bin/bash
str="75.00 W, 170.00 W"
function str_check {
    pow_array=()
    regexp='([0-9]+)\.[0-9]+[[:space:]]W,[[:space:]]([0-9]+)\.[0-9]+[[:space:]]W'
    [[ $str =~ $regexp ]] && for (( i = 0; i < 3; i++ )); do
        pow_array+=("${BASH_REMATCH[$i]}")
    done
    if [ "$1" -lt ${pow_arr[1]} ]; then
        echo "Available power limit is ${pow_array[0]}"
        echo "Setting up ${pow_array[1]}"
    elif [ "$1" -gt "${pow_arr[2]}" ]; then
        echo "Available power limit is ${pow_array[0]}"
        echo "Setting up ${pow_array[2]}"
    else
        echo "All good, setting up $1"
    fi
}

str_check "70"
str_check "100"
str_check "200"
#/bin/bash
str=“75.00瓦,170.00瓦”
函数stru检查{
pow_数组=()
regexp='([0-9]+)\.[0-9]+[:space:]W,[[:space:]]([0-9]+)\.[0-9]+[:space:]W'
[[$str=~$regexp]]&&for((i=0;i<3;i++);do
pow_数组+=(“${BASH_重新匹配[$i]}”)
完成
如果[“$1”-lt${pow_arr[1]}];则
echo“可用功率限制为${pow_阵列[0]}”
echo“设置${pow_数组[1]}”
以利夫[“$1”-gt”${pow_arr[2]}];然后
echo“可用功率限制为${pow_阵列[0]}”
echo“设置${pow_数组[2]}”
其他的
echo“一切正常,设置1美元”
fi
}
str_check“70”
str_检查“100”
str_检查“200”
已经尝试过“[]”、“(“[]”、qoute和unquote等各种方法,但得到了各种错误或错误的结果。需要有人帮我一下

./t.sh:第9行:[:70:预期为一元运算符

./t.sh:第12行:[::应为整数表达式

是时候去发现了

将对
pow_arr
的所有引用更改为
pow_array
和发现时间


将所有对
pow_-arr
的引用更改为
pow_-array
和Heh。这是一个很好的答案,但也是一个支持将问题关闭为基于打字错误的答案。@charlesduff是的!我将投第一个接近票:)哦,天哪,我不敢相信这么简单。非常感谢。@kusayu没问题:)@kusayu同样,如果
$str
$regexp
不匹配,
pow_数组
将是空的,因此与它的元素的比较将失败。嘿。这是一个很好的答案,但也是一个支持以打字错误结束问题的答案。@CharlesDuffy是的!我将投第一个接近的票:)哦。天哪,我真不敢相信就这么简单。非常感谢。@kusayu没问题:)@kusayu还有,如果
$str
$regexp
不匹配,
pow_数组
将为空,因此其元素的比较将失败。使用
bash-x yourscript
运行时记录每个命令,也可能有助于诊断此问题。运行h
bash-xyourscript
,记录每个命令运行时的日志,也可能有助于诊断此问题。
Line 9:
    if [ "$1" -lt ${pow_arr[1]} ]; then
                  ^-- SC2154: pow_arr is referenced but not assigned (did you mean 'pow_array'?).
                  ^-- SC2086: Double quote to prevent globbing and word splitting.