用于windows的perl系统函数中的多个参数

时间:2014-09-25 10:50:34

标签: windows perl

我有一个scneario,我必须执行一个java程序&因为我必须首先设置类路径&在单个perl程序下调用的所有内容。我正在尝试下面不起作用的命令:

$command1="echo \" First command\"";
$command2="echo \" Second command\"";

system("$command1;$command2");

上面的命令在LINUX中工作正常但在windows中没有。请帮我执行。

3 个答案:

答案 0 :(得分:2)

在大多数平台上,

system($shell_command);

装置

system('sh', '-c', $shell_command);

在Windows上,它意味着更接近

system('cmd', '/x', '/c', $shell_command);

选项1

继续使用bourne shell命令,但需要明确指定bourne shell。

system('sh', '-c', 'echo 1 ; echo 2');

由于计算机不太可能安装了bourne shell,因此不太可能。

选项2

使用本地shell的正确语法。

if ($O eq 'MSWin32') {
   system('echo 1 & echo 2');
} else {
   system('echo 1 ; echo 2');
}

选项3

两次致电system

system('echo 1');
system('echo 2');

答案 1 :(得分:1)

如果要在命令之间使用;,则必须调用shell。这是;

的替代方案
my @cmds =(
  [ "echo",  q{" First command"} ],
  [ "echo",  q{" Second command"} ],
);

system (@$_) for @cmds;

答案 2 :(得分:-1)

这就是你正在尝试的

$a=" echo wasssup people";
$b=" echo hi guys";
system("$a"."$b");