Supprimer " set-v` / `set-x` enregistrement seulement pour une seule ligne dans bash
Je suis en train d'écrire une .sh script comme suit:
echo script started
./some_command > output_file
echo script ended
J'aimerais que la sortie est la suivante:
script started
./some_command > output_file
script ended
J'ai essayé set -v
, set +v
mais il ne fonctionne pas correctement,
est-il rien de semblable à @echo
dans le lot?
Grâce
au début de votre script shell utiliser
J'allais vous suggérons d'utiliser l'erreur standard de la sorte:
oui, je veux à la sortie de mes commandes, à l'exception de la commande echo, désolé pour la confusion
Ce que vous essayez de faire semble non standard et les problèmes de ventre.
Ne pas abandonner si vite et d'accepter une réponse que vous n'aimez pas... Tu viens de posté ceci il y a 3 heures. Peut-être changer le titre parce que ce que vous voulez vraiment faire semble être imprimer les commandes dans un script bash, l'exception n'est pas l'écho de la commande echo, deux fois...
#!/bin/sh -x
Ce sera la sortie de chaque exécutionJ'allais vous suggérons d'utiliser l'erreur standard de la sorte:
echo script started >&2
, puis exécutez votre script avec myscript 2> /dev/null
, mais qui ne semble pas être ce que vous voulez.oui, je veux à la sortie de mes commandes, à l'exception de la commande echo, désolé pour la confusion
Ce que vous essayez de faire semble non standard et les problèmes de ventre.
Ne pas abandonner si vite et d'accepter une réponse que vous n'aimez pas... Tu viens de posté ceci il y a 3 heures. Peut-être changer le titre parce que ce que vous voulez vraiment faire semble être imprimer les commandes dans un script bash, l'exception n'est pas l'écho de la commande echo, deux fois...
OriginalL'auteur Monster Hunter | 2013-09-25
Vous devez vous connecter pour publier un commentaire.
Ce n'est ce que vous souhaitez :
C'est la manière simple.
il y a un moyen avec
eval
mais ne l'utilise pas (problèmes de sécurité). BAISER. 'eval' est une faute d'orthographe courante de 'mal'. Si eval est la réponse, vous êtes sûrement se poser la mauvaise question. Voir mywiki.wooledge.org/BashFAQ/048semble comme il n'y a pas de meilleures solutions. Je crois que je vais prendre la vôtre comme la réponse.
OriginalL'auteur Gilles Quenot
À l'aide de
bash -x
à partir du commentaire de @TopGunCoder:La SORTIE est chaque commande suivie par son résultat:
echo
, alors, on peut exécuter: "$0" started
, et ont le même effet, mais avec une plus courte préfixe et pas besoin d'un>/dev/null
de redirection. (:
est synonyme detrue
, mais d'une manière conventionnelle/traditionnellement compris pour indiquer ce type d'espace réservé à l'usage).Merci, Charles. Je ne connaissais pas
:
. Ce fut répondu il y a longtemps, et je pense que j'ai juste adapté le cas des OP exemple. Je ne sais pas pourquoi j'ai même mis la redirection.OriginalL'auteur beroe
Au lieu d'utiliser
echo
juste le remplacer par#
de cette façon, l'écho n'est pas affichée et vous obtenez toujours des commentairesOriginalL'auteur TopGunCoder