1 votes

Masquage des sorties de travail internes par Shell Shell.

Je fais un Shell Shell qui peut mettre à jour un outil. Je veux que lorsque je lance le

root@host:# sh script.sh

alors la sortie sera

Its installing
Its done

Mais maintenant mon script ressemble à ceci

root@host:# sh script.sh
Son installation
Affichage des sorties de travail du script internat
Son fait

Comme je le sais stty -echo cache stdin dans le terminal et stty echo activer l'affichage de stdin dans le terminal. Mais comment puis-je cacher la sortie stander par Shell Shell ?

1voto

socken23 Points 459

Rediriger à la fois stdout et stderr vers /dev/null :

> /dev/null 2>&1

OU dans bash :

&> /dev/null

Vous pouvez le faire pour tous les programmes engendrés par votre script en utilisant exec avec la redirection au début de votre script.

exec > /dev/null 2>&1

A moins que les programmes que vous invoquez dans votre script accèdent directement au terminal (rare), cela devrait vous couvrir.

Une remarque sur les redirections : L'ordre est important. Il doit être > /dev/null 2>&1 , PAS 2>&1 >/dev/null . J'avais l'habitude de penser que la dernière solution fonctionnerait parce que > ressemble à une flèche, ce qui me fait penser à des pointeurs (tout comme le mot "redirect"), et si je pointe stderr vers stdout et ensuite stdout vers /dev/null, alors les deux devraient pointer vers /dev/null. Or, ce n'est pas le cas. Les descripteurs de fichiers ne sont pas des pointeurs et il est plus utile de penser à > comme une sorte d'affectation à un descripteur de fichier plutôt que de pointer. (En quelque sorte, parce que techniquement, un fd est juste un nombre et vous avez besoin de fonctions système comme dup2 pour ouvrir un fichier différent dans le même descripteur de fichier ; mais je pense que l'affectation est une bonne abstraction de haut niveau).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X