Parece ser mais um problema se analisar os comandos. bash
espera que o colchete de fechamento seja o último argumento e reclama se não for exatamente uma string "]".
bash$ [ 1 ]
bash$ [ 1 ] hi
bash: [: missing ']'
bash$ [ 1 ]hi
bash: [: missing ']'
bash$ dash
$ [ 1 ]
$ [ 1 ] hi
dash: 2: [: missing ]
$ [ 1 hi]
dash: 3: [: missing ]
$ [ 1 ]:
$ [ 1 ]hi
$
A concha dash
apenas fará com que o primeiro caractere seja "]" e ignore o resto. Se o "]" não estiver no primeiro caractere do último argumento, ele retornará um erro semelhante como bash
.