我可以在Perl的反引号中执行多行命令吗?

时间:2010-10-01 00:48:03

标签: perl solaris unix nohup

在Unix中,我有一个我想用nohup运行的进程。但是,此过程将在某个时刻等待,我必须输入yesno才能继续。到目前为止,在Unix中我一直在做以下

nohup myprocess <<EOF
y
EOF

所以我在'y'文件中使用nohup和pipe启动进程'myprocess',然后关闭文件。上面的行实际上是三个单独的命令 - 即我在UNIX的第一行输入,然后我得到一个提示,我输入'y'然后按Enter键然后最后输入'EOF'并再次点击返回。

我想知道在Perl中执行此操作,但我不知道如何执行此命令,因为它超过三行。我不知道以下内容是否有效......

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

请帮助 - 谢谢!

2 个答案:

答案 0 :(得分:5)

我认为您的提案将按原样运作。如果没有,请尝试用管道替换重定向:

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

另外,根据您使用nohup进行操作的原因,请使用Proc::Daemon查看以下纯Perl守护进程:How can I run a Perl script as a system daemon in linux?

答案 1 :(得分:2)

Expect也可用于交互式程序。