Я пытаюсь сделать простое сравнение с проверкой, если строка является пустым ударом использования:
line=$(cat test.txt | grep mum )
if [ "$line" -eq "" ]
then
echo "mum is not there"
fi
Но это не работает, это говорит: [: слишком много аргументов
Большое спасибо за Вашу справку!
Вы также можете использовать переменную $?
, для которой задан статус возврата команды. Таким образом, у вас будет:
line=$(grep mum test.txt)
if [ $? -eq 1 ]
then
echo "mum is not there"
fi
Для команды grep
, если есть какие-либо совпадения, $?
установлен в 0 (завершен без ошибок) и если совпадений нет $ ?
равно 1.
if [ ${line:-null} = null ]; then
echo "line is empty"
fi
или
if [ -z "${line}" ]; then
echo "line is empty"
fi
if line=$(grep -s -m 1 -e mum file.txt)
then
echo "Found line $line"
else
echo 'Nothing found or error occurred'
fi
Классический ответ sh, который также будет работать в bash:
if [ x"$line" = x ]
then
echo "empty"
fi
Ваша проблема также может быть в том, что вы используете '-eq', который предназначен для арифметического сравнения.