@ksvdon

Допустима ли в bash следующая запись?

if [ "$p" = 0 ] && [ "$n" = 0 ]; then
    return 1
else
    return 0
fi

Запускал скрипт через bash -x ./script и заметил, что проверяется только первое условие. Выглядит это примерно так:
+ '[' 0 = 0 ']'
Скажем у меня переменная $p получилась равной "0", а переменная $n равна "1". Первая проверка удовлетворяет условию, а вторая нет. Но второй проверки нет вообще в выводе "bash -x". Наверное так делать и нельзя? (скрипт выдает "return 1")...

Короче. Не знаю какого черта, но я поставил запись типа
if [ $p -eq 0 -a $n -eq 0 ]; then
echo "success"
else
echo "fail"
fi
и вроде проканало. Выдало fail наконец. Если сделать то же только написать -ne и заменить success и fail местами - не отрабатывает...
  • Вопрос задан
  • 2324 просмотра
Решения вопроса 1
merryjane
@merryjane
Системный администратор
Я бы сделал так:
if [ "$p"= 0 -a "$n"= 0 ]
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
if [[ "$p" = 0 && "$n" = 0 ]]; then
Ответ написан
RicoX
@RicoX
Ушел на http://ru.stackoverflow.com/
Условие у вас описано верное, смотрите может где ошибка в типах данных, например приходят текстовые, попробуйте описать так:
if [ "$1" = "0" ] && [ "$2" = "0" ]; then
если же данные в обоих случаях int, то уберите кавычку с переменной и используйте eq
if [[ $1 -eq 0 ]] && [[ $2 -eq 0 ]]; then
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы