我有以下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
答案 0 :(得分:2)
如果你准确指出了你得到的错误会有所帮助,但我很确定这是因为$id
不是数字。 ((...))
复合命令执行算术评估,在这种结构中扩展的shell变量必须扩展为算术表达式。
对于字符串比较,请使用[[ ... ]]
复合命令(并且不要忘记在双括号周围放置空格)。这需要一个条件表达式,其中==
是字符串相等(并且-eq
可用于数字相等)。