update theme how for agnoster arrays shell unix for-loop zsh

arrays - theme - zsh github



ZSH para problema de variable de matriz de bucle (2)

Estoy trabajando en ZSH, pero estoy seguro de que las instrucciones BASH probablemente también ayuden. Necesito tener un bucle for que pase por los valores almacenados en la matriz lw y luego inicie un script de shell, basado en el nombre almacenado en la matriz.

Hasta ahora, esto es lo que he encontrado:

$lw=(''plugin1'' ''plugin2'' ''plugin3'') for i in $lw; do . ~/Library/Rogall/plugins/$lw[$i]/lw.prg end; done

simplemente me da un error cuando se ejecuta y dice que no puede encontrar ~ / Library / Rogall / plugins // lw.prg, por lo que parece que simplemente está ignorando mi variable.

¿Alguna idea de dónde me he equivocado?


¿Por qué molestarse en usar la matriz? Esto se puede hacer en sh portátil fácilmente:

lw=''plugin1 plugin2 plugin3'' for i in $lw; do . ~/Library/Rogall/plugins/$i/lw.prg end done

Tenga en cuenta que para que esto funcione en zsh, debe hacer que zsh haga lo correcto con: set -o shwordsplit


En realidad es mucho más simple que eso:

lw=(''plugin1'' ''plugin2'' ''plugin3'') for i in $lw; do . ~/Library/Rogall/plugins/$i/lw.prg end done

En resumen:

  • Asignar a "foo", no "$ foo" (el shell intentaría expandir $ foo y asignarlo a lo que se expanda; por lo general, no es útil)
  • Utilice la variable de bucle directamente; contiene el valor de la matriz en lugar del índice