Здесь-документ не работает должным образом в сценарии оболочки

Похоже, что нет, когда процесс помещается в фоновый режим, stdin отделяется от него (иначе он не находится в фоновом режиме). Но не stdout или stderr, которые могут привести к путанице при печати в терминале, когда фоновый процесс печатает некоторые сообщения.

1
14.02.2018, 14:08
1 ответ

Su comando dialog, cuya salida se redirige al archivo logservidor, se está ejecutando en el extremo remoto. Pero la línea que se supone que debe leer su salida:

case `cat logservidor` in

... se está ejecutando localmente, mientras se construye el documento aquí -. Esto se debe a que aquí -los documentos realizan varias expansiones, incluida la sustitución de comandos, en el momento en que se definen.

Puede retrasar esta expansión (para que solo ocurra cuando se ejecuta el script )citandoEOF:

nc $ip $porta_cliente <<-"EOF"

Pero eso también retrasaría la expansión de variables en el script como $ip. Si desea que esas variables se expandan de inmediato, pero el comando catse ejecuta más tarde, puede evitar los acentos graves:

case \`cat logservidor\` in

También puede depurar el problema usted mismo observando el comando final antes de intentar enviarlo y ejecutarlo. Reemplace la primera línea con

cat > tmp-doc <<-EOF

Luego mire en tmp-docpara ver qué se habría enviado nc.

4
27.01.2020, 23:23

Теги

Похожие вопросы