Antworten:
Eine ähnliche Frage wurde kürzlich beantwortet : Die Symbole werden in der Zeile ausgewertet, bevor das Symbol in dieser Zeile definiert wird, sodass die Definition und Verwendung der Symbole zum Trennen von Zeilen aufgeteilt werden muss.
Auf Aufforderung durch einen Kommentar hätten Sie dies tun können:
foo=bar bash -c 'echo $foo'
Dieser weist zuerst einen Wert zu foound übergibt diesen als Umgebungsvariable an einen neuen Prozess, wo er gedruckt werden kann.
Weitere Informationen finden Sie in der POSIX Shell Command Language Token-Erkennung .
Nach dem Kommentar von @mikeserv :
Die Shell liest ihre Eingabe in Zeilen aus einer Datei, von einem Terminal bei einer interaktiven Shell oder von einer Zeichenfolge bei sh-c oder system ().
Sobald ein Token abgegrenzt ist, wird es gemäß den Anforderungen der Grammatik in der Shell-Grammatik kategorisiert.
@username...comment, wird der von Ihnen angegebene Benutzer eine kleine Nachricht erhalten, die ihn darüber informiert, dass Sie mit ihm gesprochen haben. Nun, sie werden, wenn es Thread-relevant ist.
luit.cich mir das angeschaut und ich denke, ich kann es einfach ändern setup_io(){ ... ;fnctl(0, [GS]ETFL, 0);...}, um es 2für das erste Argument zu tun . Nun, ich denke, die copyTermios()und setRawTermios()Funktionen müssen möglicherweise auch ein wenig modifiziert werden, aber es sollte einfach sein, denke ich. Das rc = (return)für jede Zeile scheint seltsam - aber ich bin auch kein C-Programmierer. Ist das dein Ding oder wurde das geerbt? und wenn sich Ihr Kommentar auf Leerzeichen bezieht, sind "${set_null_var:=new val and $(echo other stuff)}"Sie mit allem größtenteils sicher. Einige Muscheln machen seltsame Sachen mit }.
env foo=bar bash -c 'echo $foo'