para interrupciones en la ejecución del script en ZSH

3

Me siento tonto. Tengo un script ZSH con, por ejemplo, dos bucles de archivo, por ejemplo:

for f (*aaa*) {echo "$f"}
for f (*bbb*) {echo "$f"}

El script sale si el primero findno encuentra archivos coincidentes. Necesito el script para seguir trabajando.

¿Qué me estoy perdiendo?

Igor Spasic
fuente

Respuestas:

5

Si no hay coincidencia para *aaa*un error, se informa de forma predeterminada. Esto es lo que hace que su script salga.

Para evitar esto NULL_GLOB, se debe configurar la opción. Luego, en lugar de informar un error, el patrón simplemente se elimina de la lista de argumentos, si nada coincide.

Hay varias formas de configurar NULL_GLOB:

  • para todo el script pasando la -Gopción de línea de comando a zsh. Esto también se puede hacer en la línea hash-bang:
$ zsh -G SCRIPT
#! / usr / bin / zsh -G
para f (* aaa *) {echo "$ f"}
para f (* bbb *) {echo "$ f"}
  • para todas las líneas siguientes configurándolo con setopt:
setopt NULL_GLOB
para f (* aaa *) {echo "$ f"}
para f (* bbb *) {echo "$ f"}
  • para un solo patrón utilizando el calificador glob N:
para f (* aaa * (N)) {echo "$ f"}
para f (* bbb *) {echo "$ f"}
Adaephon
fuente
y pensé que sabía algo sobre zsh ... ¡guau! esta respuesta es genial :)
rsm