为什么有一个“预期的整数expression式”?

为什么我有一个整数expression式预期错误与此:

at=`echo $1 | grep -q "@"` if [ $at -ne 0 ]; then echo "blabla" else echo "bloblo" fi 

$at被设置,并且testing在脚本之外正常工作

在测试grep -q的结果时,你想测试$? 不是grep的输出,这将是空的

 at=$(echo "$1" | grep -q "@") if [ $? -ne 0 ]; then ... 

或干脆

 if echo "$1" | grep -q "@"; then ... 

或者,更多的抨击

 if grep -q "@" <<< "$1"; then ... 

或者,不用调用grep:

 if [[ "$1" == *@* ]]; then ... 

要么

 case "$1" in *@*) echo "match" ;; *) echo "no match" ;; esac 

-ne用于比较整数。 使用!=比较字符串。