【问题标题】:Can I execute a multiline command in Perl's backticks?我可以在 Perl 的反引号中执行多行命令吗?
【发布时间】:2011-04-19 15:30:34
【问题描述】:

在 Unix 中,我有一个想使用 nohup 运行的进程。但是,此过程有时会在提示符处等待,我必须输入yesno 才能继续。到目前为止,在Unix中我一直在做以下事情

nohup myprocess <<EOF
y
EOF

所以我使用 nohup 启动进程“myprocess”,并在一个带有“y”的文件中使用管道,然后关闭该文件。上面的行实际上是三个单独的命令 - 即我在 UNIX 的第一行按 enter,然后我得到一个提示,我输入“y”,然后按 enter,最后输入“EOF”并再次按回车。

我想知道在 Perl 中执行此命令,但我不确定如何执行此命令,因为它超过了三行。我不知道以下是否可行....

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

请帮忙 - 谢谢!

【问题讨论】:

  • 也许 Unix 和 Linux stackexchange 会有所帮助:unix.stackexchange.com
  • 当你不知道某些东西是否可行时,编写一个小测试程序并找出答案。 :)

标签: perl solaris unix nohup


【解决方案1】:

我认为您的建议将按原样进行。如果没有,请尝试用管道替换重定向:

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

另外,根据您为什么要执行 nohup,请查看以下使用 Proc::Daemon 的纯 Perl 守护程序方法:How can I run a Perl script as a system daemon in linux?

【讨论】:

    【解决方案2】:

    Expect 也可以用于交互式程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-10
      • 2015-01-11
      • 2017-03-22
      • 1970-01-01
      • 2011-12-12
      • 2013-07-14
      • 2016-11-15
      相关资源
      最近更新 更多