【问题标题】:Start Perl script via "Windows Command" through Cygwin通过 Cygwin 通过“Windows 命令”启动 Perl 脚本
【发布时间】:2013-06-18 17:01:23
【问题描述】:

我有以下问题:

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

【问题讨论】:

    标签: windows perl bash cygwin


    【解决方案1】:

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

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

    如果您真的想按照自己的方式进行操作 - 调用一个调用 Perl 脚本的 Bash 脚本的 cmd 脚本 - 那么您需要编写一个 Bash 脚本来调用您的 Perl 脚本:

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

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

    【讨论】:

    • 感谢您的快速回复!我会在周日测试它并给你一个反馈:-)!
    • "...你需要编写一个 Bash 脚本..."这并不完全正确。请参阅我的答案以了解原因。
    【解决方案2】:

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

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

    来自bash 的手册页:

    -c 字符串

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

    【讨论】:

    • 感谢您的贡献,不幸的是,我不能将两者都标记为解决方案,因为两者都对我有用,您得到了我的支持 :-)
    猜你喜欢
    • 1970-01-01
    • 2015-10-30
    • 2011-04-13
    • 2018-08-02
    • 2017-09-13
    • 2013-03-22
    • 2020-08-29
    • 2015-12-22
    • 1970-01-01
    相关资源
    最近更新 更多