J'ai un script Bash qui exécute un programme avec des paramètres. Ce programme génère un certain statut (faire ceci, faire cela ...). Il n'y a aucune option pour que ce programme soit silencieux. Comment puis-je empêcher le script d'afficher quoi que ce soit?
Je cherche quelque chose comme "l'écho désactivé" de Windows .
echo foo > $(tty)
un script et exécutez./test.sh &> /dev/null
- La sortie est toujours imprimée sur le terminal. Bien sûr, ce n'est pas un problème si vous écrivez un script qui n'utilise pas de telles commandes./dev/null
existe dans Cygwin, vous n'avez pas besoin de l'utilisernul
.Quelque chose comme
Cela empêchera la sortie standard et la sortie d'erreur, les redirigeant tous les deux vers
/dev/null
.la source
2>/dev/null
Essayer
:
est l'abréviation de "ne rien faire".$()
est juste votre commande.la source
0
(succès). Voyons un exemple utilisant une commandefalse
qui retourne toujours1
(échec). Par exemple,( echo foo | tee file ; false ) && echo bar
affichefoo
. En utilisant votre truc pour supprimer la sortie:( : $(echo foo | tee file ; false) ) && echo bar
. Mais il affichebar
ce qui signifie que le code d'état de retour est0
(ce n'est pas le code d'état renvoyé defalse
). Veuillez mettre à jour votre réponse en fournissant cette limitation. ViveDUMMY=$(yourcommand)
? Il n'a pas la limitation que vous avez mentionnée. :)DUMMY=$( echo foo | tee file ; false ) && echo bar
n'affiche rien. Et la commandeDUMMY=$( echo foo | tee file ; true ) && echo bar
s'affichebar
. Faites-moi savoir si vous fournissez une réponse pour le voter ;-) CheersUne alternative qui peut convenir dans certaines situations consiste à affecter le résultat d'une commande à une variable:
Étant donné que Bash et les autres interpréteurs de ligne de commande POSIX ne considèrent pas les affectations de variables comme une commande, le code retour de la présente commande est respecté.
Remarque: l' affectation avec le mot clé
typeset
ordeclare
est considérée comme une commande, donc le code de retour évalué dans le cas est l'affectation elle-même et non la commande exécutée dans le sous-shell:la source
Comme la publication d'Andynormancx , utilisez ceci (si vous travaillez dans un environnement Unix):
Ou vous pouvez utiliser ceci (si vous travaillez dans un environnement Windows):
la source
> nul
sur Windows avec cygwin ou git bash et maintenant vous êtes coincé avec unnul
fichier qui ne peut pas être supprimé, essayez cette réponse , cela a fonctionné comme un charme.Jetez un œil à cet exemple du projet de documentation Linux :
Cela dit, vous pouvez utiliser cette redirection simple:
la source
Dans votre script, vous pouvez ajouter ce qui suit aux lignes dont vous savez qu'elles donneront une sortie:
Sinon, vous pouvez également essayer
la source
>>
)?