Es funktioniert nicht, weil variable Expansion in den Strings in doppelten Anführungszeichen geschieht vor der Befehl aufgerufen wird. Das heißt, wenn ich schreibe:
echo "$HOME"
Die Shell wandelt diese in:
echo "/home/lars"
Bevor tatsächlich den Befehl echo aufrufen. wenn Sie in ähnlicher Weise geben:
sh -c "F=\"123\"; echo $F"
Dies wird umgewandelt in:
sh -c "F=\"123\"; echo"
Bevor eine der sh
Befehl aufrufen. Sie können einfache Anführungszeichen verwenden variable Expansion zu hemmen, zum Beispiel:
sh -c 'F="123"; echo $F'
Sie auch die $
mit einem Backslash entkommen:
sh -c "F=\"123\"; echo \$F"
Auch, wenn Sie versuchen, 'bash' zu lernen, verbringen etwas gute Zeit mit der 'bash'-Manpage und auch [the #bash faq] (http://mywiki.wooledge.org/BashFAQ). – larsks
Beachten Sie auch, dass es im einfach zitierten Stich nicht notwendig war, die Anführungszeichen zu entziffern: ''F =" 123 "' statt" F = \ "123 \" ''. – larsks
Danke! Macht Sinn. Es sind die kleinen Details, die einen großen Unterschied machen. :-) – Daniel