當然,這對某人來說是一個非常簡單的答案。
如果我將以下內容保存為 new.pl,我如何將 $name 從 powershell 命令列傳遞給它,以便我可以運行并從 PS 設定變數
print "Hello, world, from $name.\n";
我嘗試了啟動行程并使用 cmd.exe /C 但真的不知道需要什么。謝謝
uj5u.com熱心網友回復:
你只需使用
perl a.pl $name
這提供了 中的值@ARGV。
use v5.20;
use warnings;
my ( $name ) = @ARGV;
say "Hello, world, from $name.";
PS> $name = "your friendly neighbourhood Spiderman"
PS> perl a.pl $name
Hello, world, from your friendly neighbourhood Spiderman.
作為一個單行:
perl "-Mv5.20" -e"say qq{Hello, world, from `$ARGV[0].}" $name
如果您需要在使用-nor時傳遞引數-p,請參閱如何在 -n 或 -p 模式下使用 Perl 處理選項?
uj5u.com熱心網友回復:
我找到了這個答案,它說您可以使用-s命令列開關來傳遞任意資料。此答案中提供的示例如下:
perl -se 'print "xyz=$xyz\n"' -- -xyz="abc"
這個例子中的-e開關只允許從命令列執行代碼,在這種情況下這不是必需的,因為你正在運行一個檔案,所以我們可以擺脫它。我沒有使用 perl 的經驗,也找不到任何關于--它的作用的資訊。如果有人知道,請隨時發表評論,我會將其添加到答案中,但現在我將忽略它,因為它似乎沒有它也能作業。
在這些修改之后,上面的命令看起來像這樣:
perl -s new.pl -name="joe"
很簡單。現在我們可以很容易地將其轉換為 PowerShell 命令。perl是正在運行的程式,其他一切都是引數。使用Start-Process它看起來像這樣:
Start-Process perl -ArgumentList "-s new.pl -name=`"joe`""
現在這確實有效,但默認情況下Start-Process會創建一個新視窗,因此它會打開 perl 解釋器,該解釋器會立即關閉,因為沒有任何東西告訴它等待。如果您希望它將輸出列印到 PowerShell 視窗,您可以使用該-NoNewWindow開關。
Start-Process perl -ArgumentList "-s new.pl -name=`"joe`"" -NoNewWindow
uj5u.com熱心網友回復:
添加我的 ( $name ) = @ARGV; 到 perl 腳本允許我從命令列傳遞所需的變數 .\new.pl $variable1
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/495207.html
上一篇:正則運算式不適用于省略特定字串
