Почему «целочисленное выражение ожидается»? - PullRequest
3 голосов
/ 24 мая 2011

Почему у меня целочисленное выражение, ожидаемая ошибка с этим:

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

$at установлено, и тест работает нормально вне сценария

Ответы [ 2 ]

4 голосов
/ 24 мая 2011

При проверке результата 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
3 голосов
/ 24 мая 2011

-ne для сравнения целых чисел.Используйте != для сравнения строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...