hummingbird
@hummingbird

В чем ошибка (let: =: syntax error: operand expected (error token is "="))?

Здравствуйте!

Есть скрипт:
#!/bin/bash

echo "Введите своё имя:"

read user_name

let count = `grep $user_name /etc/passwd | wc -l`

if [ $count -gt 0 ];
	then
		echo "В файле /etc/passwd найдено $count совпадений!"
	else
		echo "Нет совпадений!"
fi


Ругается:
./scrypt.sh: line 7: let: =: syntax error: operand expected (error token is "=")
./scrypt.sh: line 9: [: -gt: unary operator expected

В чем проблема?
  • Вопрос задан
  • 4402 просмотра
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
У вас пробел между count между = и между собственно присваиваемым значением, в результате count пустой.
И в операторе тест у вас [ $count -gt 0] при пустой переменной $count расшифровывается как [ -gt 0 ], о чем и сообщает ошибка синтаксиса.
При использовании оператора test, всегда берите переменные в кавычки, то есть
[ "$count" -gt 0 ] или используйте продвинутый test - [[ $count -gt 0 ]], что еще лучше.
Внимательнее с пробелами - где они нужны и где не нужны.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mourr
@mourr
Passionate JS developer
Вы уверены, что вы поняли как использовать let? Документация говорит что он используется для арифметического EXPRESSION

stackoverflow.com/questions/18704857/bash-let-stat...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы