簡體   English   中英

如何使用Cygwin在perl腳本中運行系統命令

[英]how to run system command in perl script with Cygwin

我正在嘗試在Cygwin中實現perl腳本。 該腳本在其中進行了一些不同的調用。 例如,

system "C:\\users\\program.exe"; 

要么

exec("C:\\users\\program.exe");

當我嘗試在cygwin中運行它時,出現了以下錯誤:

sh: C:cygwin64cygdriveprogram.exe: command not found

我知道這是一個愚蠢的問題,但是如何使它找到program.exe? 如果我在cygwin終端中瀏覽目錄,則顯然有program.exe ...

找到程序后,我想在新的Cygwin終端中生成新過程。

使用Unix文件分隔符和/cygdrive/c/虛擬驅動器:

system "/cygdrive/c/users/program.exe"; 

要么

exec("/cygdrive/c/users/program.exe")
 exec("C:\\users\\program.exe");

執行bourne shell命令

 C:\users\program.exe

這是一種怪異的寫作方式

 C:usersprogram.exe

執行以下shell命令可能會起作用:

 C:\\users\\program.exe           # exec("C:\\\\users\\\\program.exe");

但是正確的路徑是

 /cygdrive/c/users/program.exe    # exec("/cygdrive/c/users/program.exe")

TMTOWTDI:

#! /usr/bin/env perl

use strict;
use warnings;

my @cmd = ("/c", "echo", "hi" );

system('C:\\Windows\\System32\\cmd.exe',       @cmd) == 0 or die;
system('C:/Windows/System32/cmd.exe',          @cmd) == 0 or die;
system('/cygdrive/c/Windows/System32/cmd.exe', @cmd) == 0 or die;

chomp(my $cmd = `cygpath 'C:\\Windows\\System32\\cmd.exe'`);
system($cmd, @cmd) == 0 or die;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM