como verificar se $ 1 e $ 2 são nulos?

31

Estou executando algum script que passa o argumento string e quero fazer if else declaração mostrada abaixo:

if [  != '' ] && [  != '' ]
then 
    do something.....

mas foi mostrado Error too many argument . Por quê?

    
por taymindis Woon 06.04.2014 / 18:31

4 respostas

41

Tente usar o teste -z:

if [ -z "" ] && [ -z "" ]

De man bash :

-z string
   True if the length of string is zero.
    
por Sylvain Pineau 06.04.2014 / 18:47
10

Como isso é marcado como bash , recomendo que você use a construção de teste estendida ( [[...]] ) , e esqueça as citações:

if [[ -z  && -z  ]]; then
...

A menos que você queira compatibilidade sh / POSIX, não há razão para não usar [[ ]] .

    
por muru 21.09.2014 / 15:38
3

Isso também funciona,

if [ "" == "" && "" == ""]; then
echo NULL
fi
    
por Avinash Raj 06.04.2014 / 18:56
0

Uma abordagem muito frequente é a seguinte:

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

Freqüentemente é usado para evitar conseqüências não intencionais, como variáveis não configuradas. Com mais frequência, você verá isso como if [ "x$var" != "x" ]

    
por Sergiy Kolodyazhnyy 25.12.2016 / 00:49