我知道system()
and qx()
,但我需要执行 ~15 bash 命令。例如
mkdir
, chown
, edquota -p user1 -u user2
, cp -r
, su - username
, git
, rm
,ln -s
问题
有没有一种在 Perl 中执行许多 Bash 命令的有效方法?
在这种情况下,我不在乎输出。
首先,我会尽可能多地对那些 bash 命令使用等效的 Perl 函数,这是您在帖子中包含的大部分命令。然后,对于其余部分,我将使用 system() 或 qx() 或反引号或 IPC:: 模块之一(例如 IPC::Run 或 IPC::Open3)。
对许多命令使用 bash 语法。;
用或&&
或任何你喜欢的东西将它们分开( man bash
)。
$ perl -E 'system qq{date; date}'
在 Linux 中,我喜欢 POE 框架的POE::Wheel::Run模块,用于异步运行系统命令(和代码块)。你说你不关心输出,但如果你将来需要它 POE::Wheel::Run 有一个优雅的界面允许我们与流程进行交互。
my $s = <<END;
echo "1"
echo "2"
echo "3"
END
system("$s");