Problem mit backticks in shellscript

Ich habe ein problem, mein shellscript arbeitet mit backticks. Hier ist ein Beispiel-version des Skripts ich habe ein Problem mit:

#!/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;

Die Ausgabe dieses Skripts ist:

sh-3.2$ ./test.sh 
Echo this | awk -F' ' '{print $1}'
Echo

Warum tut das erste backtick die Verwendung einer Variablen für den Befehl nicht tatsächlich ausführen der vollständige Befehl, sondern gibt nur die Ausgabe des ersten Befehls zusammen mit dem zweiten Befehl? Bin ich etwas fehlt, um die ersten "backtick", um den Befehl auszuführen?

  • Backticks sind schrecklich veraltet und sollten nicht mehr benutzt werden -- mit $() stattdessen wird sparen Sie viele Kopfschmerzen
  • Bitte siehe BashFAQ/050 (don ' T put-Befehle in Variablen) und BashFAQ/048 (vermeiden Sie die Verwendung eval). Auch deine shebang sagt "#!/bin/sh" und Ihr prompt sagt "sh", aber Ihre Frage-tag sagt [bash] die nicht die gleiche Sache.
  • Ich habe nicht den bash-tag, einem anderen Benutzer geändert, nachdem ich dies gepostet.
  • POSIX-sh unterstützt $(). Es gibt keine Entschuldigung.
InformationsquelleAutor benw | 2010-10-13
Schreibe einen Kommentar