Hoi tout le monde,
Je suis actuellement confronté à la nécessité d'exécuter plusieurs commandes dans un écho. La ligne suivante est un exemple du problème que j'ai:
echo (cd .. && pwd)
L'idée est que, lorsque je suis actuellement dans le dossier "home / Documents", le code ci-dessus imprime "home" - tout en restant dans le répertoire "home / Documents". Cependant, la commande ci-dessus échoue.
La question plus générale est: comment puis-je exécuter plusieurs commandes dans un écho et imprimer le dernier résultat (ou tous les résultats s'il n'est pas possible autrement).
Merci, amicalement.
echo
n'est pas le bon outil. je me rappelle votre question précédente , vous semblez abuserecho
. S'il te plait regarde Problème XY . Qu'est-ce que vous essayez vraiment de faire avec cet engin?echo (cd .. && pwd) bash: syntax error near unexpected token cd'
echo `pwd`
? "est un bon début.Réponses:
Vous n'avez pas besoin
echo
du tout parce quepwd
imprime ce que tu veux. Utilisez ceci:Il y a deux choses intelligentes ici:
(whatever)
courtwhatever
dans un sous-shell. Sicd
se trouve entre ces parenthèses, cela changera le répertoire de travail actuel du sous-shell, pas le shell principal (votre actuel).a && b
courtb
si sia
réussi (état de sortie renvoyé0
). En général, si vous voulez que votre script utilisecd
pour être robuste, il est bon de toujours vérifier sicd
réussi. Cela empêche d’exécuter d’autres commandes dans un mauvais répertoire.Notez que lorsque des liens symboliques sont impliqués, vous ne pouvez pas obtenir le chemin que vous attendez. Voir cette réponse du wiki de la communauté pour plus de détails.
la source
J'ai trouvé la solution:
Je vous remercie :)
la source
( cd .. && pwd )