J'ai un problème pour faire fonctionner mon shellscript en utilisant des guillemets. Voici une version exemple du script que j'ai un problème avec:Problème avec les guillemets dans shellscript
#!/bin/sh
ECHO_TEXT="Echo this"
ECHO_CMD="echo ${ECHO_TEXT} | awk -F' ' '{print \$1}'"
result=`${ECHO_CMD}`;
echo $result;
result=`echo ${ECHO_TEXT} | awk -F' ' '{print \$1}'`;
echo $result;
La sortie de ce script est:
sh-3.2$ ./test.sh
Echo this | awk -F' ' '{print $1}'
Echo
Pourquoi la première backtick en utilisant une variable pour la commande ne procèdent à des exécutions la commande complète, mais seulement renvoie la sortie de la première commande avec la deuxième commande? Il me manque quelque chose pour que le premier backtick exécute la commande?
sont horriblement contre-apostrophes pas à jour et ne doivent pas être utilisés plus - en utilisant '$()' au contraire, vous permettra d'économiser beaucoup maux de tête – Daenyth
S'il vous plaît voir [BashFAQ/050] (http://mywiki.wooledge.org/BashFAQ/050) (ne pas mettre des commandes dans les variables) et [BashFAQ/048] (http://mywiki.wooledge.org/ BashFAQ/048) (évitez d'utiliser 'eval'). Aussi, votre shebang dit "#!/Bin/sh" et votre invite dit "sh", mais votre balise de question dit '[bash]' ce qui n'est pas la même chose. –
Je n'ai pas défini la balise bash, un autre utilisateur a changé cela après l'avoir posté. – benw