Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 为什么有一个“;需要整数表达式”;?_Linux_Bash_Shell - Fatal编程技术网

Linux 为什么有一个“;需要整数表达式”;?

Linux 为什么有一个“;需要整数表达式”;?,linux,bash,shell,Linux,Bash,Shell,为什么我有一个整数表达式预期错误: at=`echo $1 | grep -q "@"` if [ $at -ne 0 ]; then echo "blabla" else echo "bloblo" fi $at已设置,脚本外部的测试正常运行-ne用于比较整数。使用=比较字符串。在测试grep-q的结果时,您希望测试$?而不是grep的输出,grep的输出将为空 at=$(echo "$1" | grep -q "@") if [ $? -ne 0 ]; then ...

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

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

$at
已设置,脚本外部的测试正常运行

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

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

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

if echo "$1" | grep -q "@"; then ...
或者,更害羞一些

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


谢谢你,伙计!它工作正常,但需要[“$at”!=0];感谢您的快速回复:)–在测试grep-q的结果时,您想测试$?:非常感谢你一直以来的努力,我想我今天学到了一些东西:)特别是“no grep”语法。顺便说一下,谢谢
if [[ "$1" == *@* ]]; then ...
case "$1" in
  *@*) echo "match" ;;
  *) echo "no match" ;;
esac