Como jasonwryan apontou, você precisa se proteger de ter espaços nas strings que está testando. Você pode fazer isso colocando cotas em torno das variáveis, portanto, quando elas são expandidas, elas ainda são tratadas como uma única unidade ou usando o operador [[
em vez de [
, que é mais inteligente em lidar com essas expansões, mas é menos portátil.
Caso contrário, se string1
ou string2
tiver um espaço, você terá uma expressão como:
string1="string one"
if [ -z string one ] ...
então ele passará 2 strings "string" e "one" para -z
, que espera apenas um único argumento.