V UNIXu mám proces, který chci spustit pomocí nohup. Tento proces však v určitém okamžiku počká na výzvu, kde musím zadat yes
nebo no
aby to pokračovalo. Doposud jsem v UNIXu dělal následující:
nohup myprocess <<EOF
y
EOF
Spustím tedy proces ‚myprocess‘ pomocí nohup a pipe v souboru s ‚y‘ a pak soubor zavřu. Řádky výše jsou v podstatě tři samostatné příkazy – tj. stisknu Enter na prvním řádku v UNIXu, pak se zobrazí výzva, kde zadám „y“ a poté stisknu enter, nakonec napíšu „EOF“ a znovu stisknu return. Takže to funguje perfektně, ale můj problém je níže.
Chci to nyní provést v Perlu, ale nejsem si jistý, jak mohu tento příkaz provést, protože je přes tři řádky. Nevím, jestli bude fungovat následující:
my $startprocess = `nohup myprocess <<EOF &
y
EOF
`
Přijatá odpověď:
Pokud chcete napsat pouze jeden y
na standardní adresu procesu můžete provést toto:
(echo y | nohup myprocess) &
Pokud chcete pokračovat v psaní y
pro každou výzvu, která se objeví, coreutil yes
existuje přesně pro tento účel — bude neustále zapisovat, co mu řeknete, do stdout. Jeho výchozím nastavením je výstup „y“, takže můžete jednoduše:
(yes | nohup myprocess) &
ale pokud potřebujete něco jiného, můžete to předat jako argument