我以前从未遇到过这种情况,所以我需要一些帮助。我正在尝试从 shell 命令但在 perl 中发出 if/else 语句。我试过 system 和 exec 但没有成功。这是代码示例
if ($os eq 'Ubuntu'){
system('if ! dpkg -l curl &> /dev/null; then apt-get install curl -y; fi');
foreach my $mod (keys %deb){
eval "use $mod";
if($@){
system("apt-get install $deb{$mod} -y");
eval "use $mod";
}
}
}
如果我运行命令 if ! dpkg -l curl &>/dev/null;然后 apt-get 安装 curl -y; fi
在 shell 中它工作正常但是从 perl 执行它会跳过 if
部分并继续安装它。
最佳答案
if
工作得很好。
$ perl -e'system("if ! true ; then echo ok ; fi")'
$ perl -e'system("if ! false ; then echo ok ; fi")'
ok
不过有个问题。您发布的是 bash
命令,但是 system(EXPR)
是 system('/bin/sh', '-c', EXPR)
。简单替换
system(EXPR)
与
system('/bin/bash', '-c', EXPR)
应该可以解决问题。
关于linux - 从 perl 执行 if else shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38599403/