Respuestas:
Recientemente se respondió una pregunta similar : los símbolos se evalúan en la línea antes de que el símbolo se defina en esta línea, por lo que es necesario dividir la definición y el uso de los símbolos para separar las líneas.
Impulsado por un comentario, podría haber hecho esto:
foo=bar bash -c 'echo $foo'
que primero asigna un valor fooy lo pasa a un nuevo proceso como una variable de entorno donde se puede imprimir.
Puede leer más sobre esto en POSIX Shell Command Language Token Recognition .
Siguiendo el comentario de @mikeserv :
El shell leerá su entrada en términos de líneas de un archivo, de un terminal en el caso de un shell interactivo, o de una cadena en el caso de sh -c o system ().
Una vez que se delimita un token, se clasifica según lo requerido por la gramática en Shell Grammar.
@username...commentel usuario que especifiques, recibirá un pequeño mensaje que les hará saber que hablas con ellos. bueno, lo harán si es relevante para el hilo.
luit.cy creo que puedo cambiar setup_io(){ ... ;fnctl(0, [GS]ETFL, 0);...}para hacer 2el primer argumento. bueno, creo que las funciones copyTermios()y también setRawTermios()podrían necesitar una pequeña modificación, pero creo que debería ser simple. el rc = (return)para cada línea parece extraño, pero tampoco soy un programador en C. es eso tuyo o fue heredado? y si su comentario en blanco se refiere a "${set_null_var:=new val and $(echo other stuff)}"que está mayormente seguro con cualquier cosa. algunas conchas harán cosas raras con }.
env foo=bar bash -c 'echo $foo'