/ / für Pausen Skriptausführung in ZSH - zsh, Globbing

für Pausen Skriptausführung in ZSH - zsh, Globbing

Zsh

Ich fühle mich dumm. Ich habe ein ZSH-Skript mit zB zwei Dateischleifen, zB:

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

Das Skript wird beendet, wenn das erste ausgeführt wird find findet keine passenden Dateien. Ich brauche das Skript, um weiterarbeiten zu können.

Was vermisse ich?

Antworten:

5 für Antwort № 1

Wenn es keine Übereinstimmung für gibt *aaa* Standardmäßig wird ein Fehler gemeldet. Dadurch wird Ihr Skript beendet.

Um dies zu vermeiden NULL_GLOB Option muss gesetzt sein. Anstatt einen Fehler zu melden, wird das Muster einfach aus der Argumentliste entfernt, wenn nichts übereinstimmt.

Es gibt verschiedene Möglichkeiten, NULL_GLOB festzulegen:

  • für das ganze Drehbuch vorbei an der -G Befehlszeilenoption zu zsh. Dies kann auch in der Hash-Bang-Zeile erfolgen:
$ zsh -G SCRIPT
#! / usr / bin / zsh -G für f (* aaa *) {echo "$ f"} für f (* bbb *) {echo "$ f"}
  • für alle folgenden Zeilen durch setzen mit setopt:
setopt NULL_GLOB für f (* aaa *) {echo "$ f"} für f (* bbb *) {echo "$ f"}
  • für ein einzelnes Muster mit dem Glob Qualifier N:
für f (* aaa * (N)) {echo "$ f"} für f (* bbb *) {echo "$ f"}

Verwandte Fragen
Bemerkungen
Einen Kommentar hinzufügen