if语句中的字符串比较

时间:2014-12-28 13:39:37

标签: bash if-statement

我有以下Bash脚本,但是在if语句的谓词中出现错误。我做错了什么?

#!/bin/bash 
$UQ = "noqueue:" 
read -p "Address: " email
id=$(grep $email  mx.log | grep status | awk '{print  $6 }') 
read b <<<$id
read a <<<$email 

if (($id == $UQ )); 
then 
    grep $email mx.log
else 
    for((i=0;i<${#a[@]};i++)); do
        for ((j=0;j<${#b[@]};j++))
        do
           c+=(${a[i]}:${b[j]});
        done 
    done
    for i in ${c[@]}; do
       echo $i 
    done 
fi

1 个答案:

答案 0 :(得分:2)

如果你准确指出了你得到的错误会有所帮助,但我很确定这是因为$id不是数字。 ((...))复合命令执行算术评估,在这种结构中扩展的shell变量必须扩展为算术表达式。

对于字符串比较,请使用[[ ... ]]复合命令(并且不要忘记在双括号周围放置空格)。这需要一个条件表达式,其中==是字符串相等(并且-eq可用于数字相等)。