如何在 bash shell 中使用 AND 运算符在 if 语句中使用 bash 算术计算 2 个变量

问题描述 投票:0回答:1

我有一个字母数字字符串,比如“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?

linux bash shell sh
1个回答
0
投票

在 bash 中,运算符

<
按字母顺序比较
[[ ... ]]

要比较整数,可以使用

(( ... ))
代替。 请注意,在
(( ... ))
中,应使用变量而不使用
$
:

   if (( num1 <= 24 && num2 < 2 )); then

警告:

(( ... ))
可能不安全并导致代码注入。除非您确定使用的变量是有效的整数,否则不要使用它

© www.soinside.com 2019 - 2024. All rights reserved.