从perl脚本调用bash脚本

时间:2012-07-24 18:05:18

标签: perl bash

我正在尝试perl脚本中的代码,需要在bash中调用另一个文件。 不确定,这是最好的方法吗?我可以使用system()直接调用它吗? 请指导/给我一个示例方式。

从我到目前为止所做的尝试:

     #!/usr/bin/perl
     system("bash bashscript.sh");

Bash:

#!/bin/bash
echo "cdto codespace ..."
cd codetest
rm -rf cts
for sufix in a o exe ; do
echo ${sufix}
find . -depth -type f -name "*.${sufix}" -exec rm -f {} \;
done

执行perl脚本时出错:  没有这样的文件或目录代码测试

意外令牌附近的语法错误`do

4 个答案:

答案 0 :(得分:9)

如果您只想运行脚本,可以使用反引号或系统:

$result = `/bin/bash /path/to/script`;

system("/bin/bash /path/to/script");

如果您的脚本产生了大量数据, 运行它的最好方法是使用open + pipe:

if open(PIPE, "/bin/bash /path/to/script|") {
  while(<PIPE>){
  }
}
else {
  # can't run the script
  die "Can't run the script: $!";
}

答案 1 :(得分:1)

您可以使用反引号执行命令:

$command = `command arg1 arg2`;

还有其他几种方法,包括system("command arg1 arg2")来执行它们。

这是一个很好的在线参考:http://www.perlhowto.com/executing_external_commands

答案 2 :(得分:1)

您可以使用反引号,系统()或执行。

  system("myscript.sh") == 0
    or die "Bash Script failed";

另请参阅:this发布。

答案 3 :(得分:1)

我根据Why doesn't "cd" work in a bash shell script?解决了我的第一个问题:

alias proj="cd /home/tree/projects/java"

(感谢@Greg Hewgill)