Respostas:
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.
@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 mudar setup_io(){ ... ;fnctl(0, [GS]ETFL, 0);...}
a fazer 2
para o primeiro argumento. bem, acho que as funções copyTermios()
e setRawTermios()
também precisam de uma pequena modificação, mas acho que deve ser simples. o rc = (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 }
.
env foo=bar bash -c 'echo $foo'