Eu acho que estou tendo um enorme peido cerebral. eu esperaria
env foo=bar echo $foo
... para imprimir bar
, mas recebo uma linha vazia. Wat.
O mesmo acontece se eu usar a sintaxe do bash:
foo=bar echo $foo
Eu acho que estou tendo um enorme peido cerebral. eu esperaria
env foo=bar echo $foo
... para imprimir bar
, mas recebo uma linha vazia. Wat.
O mesmo acontece se eu usar a sintaxe do bash:
foo=bar echo $foo
Uma pergunta semelhante foi respondida recentemente : os símbolos são avaliados na linha antes que o símbolo seja definido nesta linha, tornando necessário dividir a definição e o uso dos símbolos para separar as linhas.
Solicitado por um comentário, você poderia ter feito isso:
foo=bar bash -c 'echo $foo'
que primeiro atribui um valor foo
e o passa para um novo processo como uma variável de ambiente onde pode ser impresso.
Você pode ler mais sobre isso no reconhecimento do POSIX Shell Command Language Token .
Seguindo o comentário do @mikeserv :
O shell deve ler sua entrada em termos de linhas de um arquivo, de um terminal no caso de um shell interativo ou de uma string no caso de sh -c ou system ().
Depois que um token é delimitado, ele é categorizado conforme exigido pela gramática na Gramática do Shell.
env foo=bar bash -c 'echo $foo'
@username...comment
especificar o usuário especificado, receberá uma pequena mensagem informando que você estava conversando com ele. bem, eles serão relevantes para o segmento.luit.c
e eu acho que eu posso apenas mudarsetup_io(){ ... ;fnctl(0, [GS]ETFL, 0);...}
a fazer2
para o primeiro argumento. bem, acho que as funçõescopyTermios()
esetRawTermios()
também precisam de uma pequena modificação, mas acho que deve ser simples. orc = (return)
para cada linha parece estranho - mas também não sou programador de C. isso é coisa sua ou foi herdada? e se o comentário dos espaços em branco se referir a"${set_null_var:=new val and $(echo other stuff)}"
você, você estará praticamente seguro com qualquer coisa. algumas conchas fazem coisas estranhas}
.