У меня есть глубина переменной bash, и я бы хотел проверить, равен ли она 0. Если да, я хочу прекратить выполнение скрипта. До сих пор у меня есть:bash scripting - проверить, равна ли переменная bash 0
zero=0;
if [ $depth -eq $zero ]; then
echo "false";
exit;
fi
К сожалению, это приводит к:
[: -eq: unary operator expected
(может быть немного неточны из-за перевода)
Пожалуйста, как я могу изменить мой сценарий, чтобы получить его за работой?
Я получаю глубину в результате из другой программы. Я попытался повторить это, и ничего не получилось. Однако, когда я использую [[]], как предложил @Jacek Dominiak, скрипт работает правильно (что довольно странно, если переменная действительно не установлена). Я должен признать, что я действительно не понимаю, что происходит здесь ... – Perlnika
Ваша переменная глубины не установлена. Это означает, что bash видит выражение, которое говорит '[-eq 0]; то ", что не имеет смысла к нему. '[[]]' - это более безопасная версия, которая, кажется, делает bash как [[null -eq 0]], которая является правильной. – cyon
Более безопасный способ проверки заключается в том, чтобы заключить обе стороны в двойные кавычки, то есть 'if [" $ depth "-eq" 0 "]'; таким образом, неустановленная переменная ('$ depth') оценивается как« "(которая, конечно, не равна нулю) –