Состояние Баш с операторами И ИЛИ - PullRequest
1 голос
/ 12 марта 2012

У меня есть оболочка bash, которая получает параметры в виде месяца (мм) и года (гггг) или времени (ммгггг).Я могу разобрать параметры и назначить их переменным.Теперь мне нужны некоторые условия для проверки этих переменных.Что мне нужно, это: если (месяц И год) ИЛИ время, тогда продолжите отображать использование.Это мой код, и он не работает.

if [[ -z $MONTH && -z $YEAR ]] || [[ -z $TIME ]]; then
    usage
    exit 1
else
    if [[ -z $TIME ]]; then
        echo $MONTH$YEAR
    else
        echo $TIME
    fi
fi

1 Ответ

5 голосов
/ 12 марта 2012

Ваша логика немного отсталая. Это:

if [[ -z $MONTH && -z $YEAR ]] || [[ -z $TIME ]]; then
    usage

(«если я пропускаю месяц и год, это ошибка; или, если у меня они есть, но я пропускаю время, это ошибка») должно быть так:

if [[ -z $MONTH || -z $YEAR ]] && [[ -z $TIME ]]; then
    usage

(«если я пропускаю месяц или год, и я пропускаю время, это ошибка»).

...