2012-03-12 1 views
1

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

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

ответ

4

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

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

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

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

(«Если мне не хватает месяца или года, и Мне не хватает времени, это ошибка»).