2 votes

MacOS modifie-t-il le fonctionnement de la redirection ?

La ligne 32 de mon script est la suivante

rm ~/UniGen/* 2> /dev/null

La redirection s'explique par le fait que je m'attends à ce que le répertoire soit parfois vide et que je n'ai pas besoin qu'il me le dise. Mais je reçois toujours

/Users/WGroleau/bin/Genealogy:32: no matches found: /Users/WGroleau/UniGen/*

lorsque je l'exécute. Pourquoi ?

4voto

David Anderson Points 30783

Vous obtenez le message d'erreur de l'interpréteur de commandes. La même chose se produirait si vous entriez la commande suivante.

echo ~/UniGen/* 2> /dev/null

L'interpréteur de commandes zsh développe * ne trouve aucun fichier correspondant, puis génère un message d'erreur indiquant ceci. Votre commande externe rm et ma commande intégrée echo ne s'exécutent jamais. La redirection ne se produit que lorsque l'une ou l'autre des commandes écrit dans stderr . Dans ce cas, l'interpréteur de commandes zsh écrit dans stderr .

Essayez plutôt ce qui suit. Ici, le shell zsh est inclus dans la redirection.

{ rm ~/UniGen/*; } 2> /dev/null

Pour information : Bash fonctionne différemment sur rm ~/UniGen/* 2> /dev/null . Lorsqu'un shell bash développe * pour ne pas trouver de correspondance, la chaîne "/Users/WGroleau/UniGen/*" est transmis à la commande rm commande. Dans ce cas, rm produirait le message suivant à l'adresse stderr qui serait redirigé vers /dev/null . En d'autres termes, le message suivant n'apparaît pas.

rm: /Users/WGroleau/UniGen/*: No such file or directory

Quoi qu'il en soit, y compris les crochets {} supprimerait le message d'erreur pour zsh et bash.

Sur la base d'une commentaire laissée par l'utilisateur1934428 concernant le nomatch un comportement similaire à celui de bash peut être émulé en utilisant le subshell ci-dessous.

(unsetopt nomatch;rm ~/UniGen/* 2> /dev/null)  

Ici, "/Users/WGroleau/UniGen/*" est transmis à la commande rm commande.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X