为什么要有“整数表达式”?

时间:2011-05-24 15:16:37

标签: linux bash shell

为什么我有一个整数表达式预期错误:

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

$at已设置,测试在脚本

之外正常工作

2 个答案:

答案 0 :(得分:4)

在测试grep -q的结果时,您希望测试$?而不是grep的输出,这将是空的

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

或只是

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

或更多bash-ly

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

或者,不用调用grep:

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

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

答案 1 :(得分:3)

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