No UNIX, tenho um processo que quero executar usando nohup. No entanto, em algum momento, esse processo aguardará um prompt em que eu tenho que entrar yes
ou no
que ele continue. Até agora, no UNIX, tenho feito o seguinte:
nohup myprocess <<EOF
y
EOF
Então, inicio o processo 'myprocess' usando nohup e canal em um arquivo com 'y' e depois fecho o arquivo. As linhas acima são efetivamente três comandos separados - ou seja, eu pressione Enter na primeira linha no UNIX, então recebo um prompt onde digito 'y' e pressione Enter para finalmente digitar 'EOF' e pressione Enter novamente. Portanto, isso funciona perfeitamente, mas meu problema está abaixo.
Quero agora executar isso no Perl, mas não sei como posso executar esse comando, pois ele tem mais de três linhas. Não sei se o seguinte funcionará:
my $startprocess = `nohup myprocess <<EOF &
y
EOF
`
Respostas:
Se você quiser apenas escrever um single
y
para o stdin do processo, faça o seguinte:Se você deseja continuar escrevendo
y
para cada prompt que aparecer, o coreutilyes
existe exatamente para esse fim - ele continuará escrevendo o que você pedir para o stdout. Seu padrão é a saída "y", para que você possa apenas:mas se você precisar de outra coisa, pode passar como argumento
fonte
yes
usado em eras