Je pense que j'ai un énorme brainfart. Je m'attendrais
env foo=bar echo $foo
... à imprimer bar
, mais j'obtiens une ligne vide à la place. Wat.
La même chose se produit si j'utilise la syntaxe bash:
foo=bar echo $foo
Je pense que j'ai un énorme brainfart. Je m'attendrais
env foo=bar echo $foo
... à imprimer bar
, mais j'obtiens une ligne vide à la place. Wat.
La même chose se produit si j'utilise la syntaxe bash:
foo=bar echo $foo
Une question similaire a reçu une réponse récemment : les symboles sont évalués dans la ligne avant que le symbole ne soit défini dans cette ligne, ce qui rend nécessaire de diviser la définition et l'utilisation des symboles pour séparer les lignes.
Invité par un commentaire, vous auriez pu le faire:
foo=bar bash -c 'echo $foo'
qui attribue d'abord une valeur à foo
et la transmet à un nouveau processus en tant que variable d'environnement où elle peut être imprimée.
Vous pouvez en savoir plus à ce sujet dans la reconnaissance du jeton de langage de commande POSIX Shell .
Suite au commentaire de @mikeserv :
Le shell doit lire son entrée en termes de lignes à partir d'un fichier, d'un terminal dans le cas d'un shell interactif, ou d'une chaîne dans le cas de sh -c ou de system ().
Une fois qu'un jeton est délimité, il est classé comme requis par la grammaire de Shell Grammar.
env foo=bar bash -c 'echo $foo'
@username...comment
l'utilisateur que vous spécifiez recevra un petit message leur faisant savoir que vous leur parliez. eh bien, ils le feront si son thread est pertinent.luit.c
et je pense que je peux changersetup_io(){ ... ;fnctl(0, [GS]ETFL, 0);...}
à faire2
pour le premier argument. eh bien, je suppose que les fonctionscopyTermios()
etsetRawTermios()
pourraient également avoir besoin d'une petite modification, mais cela devrait être simple, je pense. lerc = (return)
pour chaque ligne semble étrange - mais je ne suis pas non plus un programmeur C. est-ce votre truc ou est-ce hérité? et si votre commentaire en blanc fait référence à"${set_null_var:=new val and $(echo other stuff)}"
vous êtes en grande partie en sécurité avec quoi que ce soit. certains obus feront des trucs bizarres avec}
.