To nie działa, ponieważ zmienna ekspansja w ciągu podwójnie cytowany dzieje przed komenda jest tzw. Oznacza to, że jeśli typ:
echo "$HOME"
Powłoka ta przekształca się:
echo "/home/lars"
Przed faktycznie wywołanie polecenia echo. Podobnie, jeśli wpiszesz:
sh -c "F=\"123\"; echo $F"
ten zostanie przekształcony:
sh -c "F=\"123\"; echo"
Przed wywołaniem komendy sh
. Można używać apostrofów aby hamować ekspansję zmienny, na przykład:
sh -c 'F="123"; echo $F'
Można też uciec z $
z odwrotnym ukośnikiem:
sh -c "F=\"123\"; echo \$F"
Ponadto, jeśli starasz się dowiedzieć 'bash', wydać trochę czasu w jakości ze stroną man 'bash', a także [#bash faq] (http://mywiki.wooledge.org/BashFAQ). – larsks
Należy również zauważyć, że w cytowanym pojedynczo żądaniu nie trzeba było używać ukośnika odwrotnego: "F =" 123 "" zamiast "F = \" 123 \ "". – larsks
Dzięki! Ma pełny sens. To małe szczegóły, które robią wielką różnicę. :-) – Daniel