我有一个字母数字字符串,比如“XXXX24Y2”,我只从中提取了数字并将它们分配给2个变量,比如num1和num2,比如num1=24和num2=2 现在我想检查(如果 num1 <=24 and num2 <2); then do something. I have tried all kinds of brackets double, single, square, with quotes around the variable, without etc. I dont get any errors. Its just that bash wont read that if statement.
我的代码是这样的:
#!/bin/bash
NEW_BR_NAME=$1
TAG=$2
j_name=$3
echo $1 > brname.txt
brname=$(cat brname.txt | cut -c1-8)
if [[ "$3" == "git" ]]; then
grep -q "ABC3" brname.txt && echo "Its ABC3"
read num1 num2 <<<${brname//[^0-9]/ }
echo "num1=$num1 num2=$num2"
if [[ $num1 <= 24 && $num2 < 2 ]]; then
echo "something to print"
exit 1
fi
fi
我的代码工作得很好,直到 echo "num1=$num1 num2=$num2" 但没有错误,并且 bash shell 无法理解下一个 if 语句。我如何检查是否 $num1 <=24 adn $num2 <2 in this case? what am i doing wrong?
在 bash 中,运算符
<
按字母顺序比较 [[ ... ]]
要比较整数,可以使用
(( ... ))
代替。
请注意,在 (( ... ))
中,应使用变量而不使用 $
:
if (( num1 <= 24 && num2 < 2 )); then
警告:
(( ... ))
可能不安全并导致代码注入。除非您确定使用的变量是有效的整数,否则不要使用它