通过Cygwin通过“Windows Command”启动Perl脚本

时间:2013-06-21 14:06:48

标签: windows perl bash cygwin

我有以下问题:

我尝试通过cygwin从Windows调度程序启动一个perl脚本

我做的步骤: 调用process.bat文件 在process.bat中,我使用perl脚本的参数调用bash

症状: 如果我直接从cygwin调用“perl scriptpath”,它就像一个魅力 如果我使用bash从windows cmd调用脚本,它将无效。

命令:C:\ cygwin \ bin \ bash.exe --login /cygdrive/c/scripts/testscript.pl 它打印以下内容:

Line 3: use: command not found
Line 4: use: command not found
Can't find file Test

脚本:

#!/usr/bin/perl

use strict;
use warnings;
print "Test";

可能我只犯了一个小错误而且看不到它。它似乎用windows cmd而不是perl来解释它。

2 个答案:

答案 0 :(得分:4)

传递给bash的参数将被视为Bash脚本,而不是Perl脚本。在这种情况下没有理由使用Bash - 只需直接调用Perl:

C:\cygwin\bin\perl.exe /cygdrive/c/scripts/testscript.pl

如果确实希望按照自己的方式执行操作 - 调用cmd脚本调用调用Perl脚本的Bash脚本 - 那么您需要编写一个Bash脚本来调用Perl脚本:

#!/bin/sh
/cygdrive/c/scripts/testscript.pl

在调用bash时将该Bash脚本作为参数传递。

答案 1 :(得分:2)

您可能希望使用选项-cbash执行命令,如下所示:

C:\cygwin\bin\bash.exe --login -c /cygdrive/c/scripts/testscript.pl 

来自bash的手册页:

  

-c 字符串

     

如果存在-c选项,则从字符串中读取命令。如果字符串后面有参数,则将它们分配给位置参数,从$ 0开始。