как проверить, являются ли $ 1 и $ 2 нулевыми?

Я запускаю некоторый скрипт, который передает строковый аргумент, и я хочу сделать, если инструкция else показана ниже:

if [ $1 != '' ] && [ $2 != '' ]
then 
    do something.....

, но она показала Error too many argument. Почему?

1
задан 16 July 2015 в 01:42

3 ответа

Поскольку это помечено bash, я рекомендую использовать расширенную тестовую конструкцию ([[...]]) и забыть кавычки:

if [[ -z $1 && -z $2 ]]; then
...

Если вы не собираетесь на sh / POSIX, нет причин не использовать [[ ]].

10
ответ дан 24 May 2018 в 09:45

Это также будет работать,

if [ "$1" == "" && "$2" == ""]; then
echo NULL
fi
3
ответ дан 24 May 2018 в 09:45
  • 1
    Секунды && и других логических команд не допускаются в классическом test. Вы должны использовать другие тестовые конструкции вместо этого (например, -a, я думаю) – muru 21 September 2014 в 18:41

Очень часто подход, который вы видите вокруг, таков:

 if [ "x$var1" == "x"  ] && [ "x$var2" == "x"  ];                                                                
 then
     echo "both variables are null"
 fi

Часто он используется, чтобы избежать непредвиденных последствий, таких как изменение переменной. Чаще всего вы увидите, что он используется как if [ "x$var" != "x" ]

0
ответ дан 24 May 2018 в 09:45

Другие вопросы по тегам:

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