通过Cygwin通过“Windows命令”启动Perl脚本

我有以下问题:

我尝试通过cygwinWindows调度程序启动perl脚本

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

症状:如果我直接从cygwin调用“perl scriptpath”,它就像一个魅力如果我打电话从Windows CMD的脚本与bash它将无法正常工作。

命令: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来解释它。

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

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

如果你真的想这样做 – 调用一个调用Bash脚本的cmd脚本来调用Perl脚本 – 那么你需要编写一个Bash脚本来调用你的Perl脚本:

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

当你调用bash时,将Bash脚本作为参数传递。

你可能想使用选项-cbash执行一个命令,如下所示:

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

bash的手册页:

-c字符串

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