2

我有以下问题:

我尝试通过 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 来解释它。

4

2 回答 2

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 脚本作为参数传递。

于 2013-06-21T14:14:48.933 回答
2

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

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

bash的手册页:

-c字符串

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

于 2013-06-21T16:33:23.290 回答