J'ai un problème à obtenir mon shellscript fonctionnant en utilisant des backtsticks. Voici un exemple de version du script que j'ai un problème avec: La sortie de ce script est la suivante: p> pourquoi La première backtick utilisant une variable pour la commande n'exécute pas réellement la commande complète, mais renvoie uniquement la sortie de la première commande avec la deuxième commande? Il me manque quelque chose afin d'obtenir la première backtick pour exécuter la commande? P> p>
4 Réponses :
Dans votre premier exemple ECHO est l'analyse des paramètres - la coque ne les voit jamais. Dans le deuxième exemple, cela fonctionne parce que la coquille fait l'analyse et sait quoi faire avec un tuyau. Si vous changez d'écho_cmd pour être "Bash Echo ...", cela fonctionnera. P>
Vous devez utiliser à la place de p> sans < code> eval code> p> qui sera étendu à p> sera traité comme argument sur eval code> pour le faire fonctionner
echo code> et sera émis verbatim. Avec
eval code> cette ligne sera effectivement exécuter em>. P> p>
bash s'échappe votre commande pour vous. Essayez ou même mieux, essayez de set -x sur la première ligne, de sorte que vous voyez ce que Bash fait p> p> p>
vous bonjour,
Vous devez savoir eval em> commande. p> Voir: p> help eval
Les backtsticks sont horriblement obsolètes et ne doivent plus être utilisés - en utilisant
$ () code> sauvera de nombreux maux de tête
Veuillez vous reporter à BashFAQ / 050 (Ne mettez pas les commandes dans les variables) et Bashfaq / 048 (évitez d'utiliser
eval code>). En outre, votre Shebang dit "#! / Bin / sh" et votre invite dit "sh", mais votre étiquette de questions indique
[bash] code> qui n'est pas la même chose.
Je n'ai pas réglé l'étiquette Bash, un autre utilisateur a changé après avoir posté ceci.
POSIX SH prend en charge
$ () code>. Il n'y a pas d'excuse.