Pourquoi la sortie standard des commandes suivantes diffère-t-elle?Utilisation de bash -c avec des boucles et redirection de sortie standard
command1:
for ((i=0; i<10; i=i+1)); do echo $i; done
commande_2:
bash -c "for ((i=0; i<10; i=i+1)); do echo $i; done"
command1 imprime les nombres entiers de 1 à 10 sur une ligne séparée, comme prévu. command2 imprime 10 sur chaque ligne.
Que dois-je faire pour que command2 imprime la même chose que command1?
La longue histoire:
J'ai souvent besoin de lancer un exécutable sur un grand nombre de fichiers et de capturer la sortie de l'ensemble du processus. J'utilise une boucle for similaire à command1 dans un fichier séparé appelé my_script.sh.
Je peux alors obtenir la sortie en utilisant:
bash my_script.sh > results.txt
Comme il est un peu une douleur pour créer un fichier my_script.sh séparé pour trivial pour les boucles, j'espérais réaliser la même chose en utilisant " bash -c ", mais a couru dans ce problème.
Merci pour vos suggestions. Dans l'attente de réponses.
Misha
Ou vous pouvez simplement changer les guillemets doubles en guillemets simples. –
Yup, l'une ou l'autre approche va fonctionner. Tout ce qui obtient le shell externe pour traiter le '$' littéralement. – cdhowie
'$ i' serait' 10' si vous avez exécuté la commande 2 après la commande 1, bien sûr. – Johnsyweb