Могу ли я выполнить многострочную команду в галках Perl? - PullRequest
2 голосов
/ 01 октября 2010

В Unix у меня есть процесс, который я хочу запустить с помощью nohup.Однако этот процесс в какой-то момент будет ждать запроса, в котором я должен ввести yes или no, чтобы продолжить.До сих пор в Unix я делал следующие действия:

nohup myprocess <<EOF
y
EOF

. Поэтому я запускаю процесс «myprocess», используя nohup и pipe в файле с «y», затем закрываю файл.Вышеприведенные строки представляют собой три отдельные команды - то есть я нажимаю клавишу ввода в первой строке в UNIX, затем получаю приглашение, где я ввожу 'y', а затем нажимаю клавишу ввода, чтобы наконец набрать 'EOF' и снова нажать клавишу возврата.

Я хочу знать, выполнить это в Perl, но я не уверен, как я могу выполнить эту команду, так как она состоит из трех строк.Я не знаю, сработает ли следующее ...

my $startprocess = `nohup myprocess <<EOF &
y
EOF
`

Пожалуйста, помогите - спасибо!

Ответы [ 2 ]

5 голосов
/ 01 октября 2010

Я думаю, что ваше предложение будет работать как есть. Если нет, попробуйте заменить перенаправление на канал:

my $startprocess = `(echo "y" | nohup myprocess) &`;

Кроме того, в зависимости от того, ПОЧЕМУ вы выполняете nohup, пожалуйста, посмотрите на следующий чисто демонологический подход Perl с использованием Proc::Daemon: Как я могу запустить скрипт Perl как системный демон в linux?

2 голосов
/ 01 октября 2010

Ожидайте для интерактивных программ, также можно использовать.

...