Se não houver correspondência para *aaa*
, um erro será informado por padrão. Isso é o que faz com que seu script saia.
Para evitar isso, a opção NULL_GLOB
precisa ser definida. Então, em vez de reportar um erro, o padrão é simplesmente removido da lista de argumentos, se nada corresponder.
Existem várias maneiras de definir NULL_GLOB:
-
para o script inteiro passando a opção de linha de comando
-G
parazsh
. Isso também pode ser feito na linha de hash-bang:
$ zsh -G SCRIPT
#!/usr/bin/zsh -G for f (*aaa*) {echo "$f"} for f (*bbb*) {echo "$f"}
- para todas as linhas seguintes definindo-o com setopt:
setopt NULL_GLOB for f (*aaa*) {echo "$f"} for f (*bbb*) {echo "$f"}
-
para um único padrão usando o qualificador de glob
N
:
for f (*aaa*(N)) {echo "$f"} for f (*bbb*) {echo "$f"}