如何使用此代码创建更多命令。目前的版本是2.如何做3或4或更多?
my $startprocess = `(echo "y" | nohup myprocess) &`
用户DVK回答原始问题:
Can I execute a multiline command in Perl's backticks?
编辑:感谢塞巴斯蒂安的回复。 我必须在一行中运行所有内容,因为我在终端内运行程序,我想制作渐进式命令。
例如,命令1启动程序。命令2导航我到菜单。命令3允许我更改设置。命令4允许我发出一个命令,提示我只能在新设置条件下获得响应。
运行多个命令会让我陷入第一步。
答案 0 :(得分:5)
您引用的行包含一个管道连接的命令行。那不是运行多个命令。
您考虑使用open
吗?
my $pid = open my $fh, '-|', 'myprocess';
print $fh "y\n";
不需要在一个(反引号)行中运行多个命令,为什么不使用多个命令呢?
$first = `whoami`;
$second = `uptime`;
$third = `date`;
反引号用于捕获命令的输出,system
只运行命令并返回退出状态:
system '(echo "y" | nohup myprocess) &';
所有解决方案允许将多个命令连接在一起,因为这是一个shell功能,所有命令只是将命令字符串传递给shell(除非它足够简单,无需shell即可处理它):
击:
$ ps axu|grep '0:00'|sort|uniq -c|wc
的Perl:
system "ps axu|grep '0:00'|sort|uniq -c|wc";
$result = `ps axu|grep '0:00'|sort|uniq -c|wc`;
open my $fh, '|-', "ps axu|grep '0:00'|sort|uniq -c|wc";
始终注意引号:system "foo "bar" baz";
不会将"bar" baz
作为foo
命令的参数传递。
这个答案中有很多常见的东西:请在你的问题中更详细一些,以便得到更好的回复。