为什么我有一个整数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
用于比较整数。 使用!=
比较字符串。