0
我已經在shell腳本中編寫了Perl包裝器。我正在使用IPC :: Run :: Simple來執行系統命令。例如:在Perl腳本的命令行上運行需要密碼的程序
run ("mkdir ~$usr/12.2.0_cp/faiz_cpv/$pdate") or die "Error $ERR";
run ("cp ~$usr/12.2.0_cp/faiz_cpv/MPlist.lst ~$usr/12.2.0_cp/faiz_cpv/$pdate") || die "Error: $ERR";
run ("cd ~$usr/12.2.0_cp/faiz_cpv/$pdate; sh /opsutils/mfg_top/rel/CPV/bin/list_generation.sh . MPlist.lst mfg_relall_us\@oracle.com") or die "error $ERR";
.
.
其中一個shell腳本需要腳本的用戶輸入其密碼。也就是說,在stdout上打印一條消息,並通過shell接受密碼。在整個過程中會對該shell腳本進行一些調用,這意味着用戶必須多次重新輸入密碼。
有沒有一種方法可以讓我在命令行自己請求用戶輸入密碼,並且隱式傳遞該密碼而不是一次又一次提示用戶輸入密碼?
你應該去'IPC :: Open3'或類似的東西,因爲你基本上需要在你的衍生命令和你的腳本之間使用一些雙向通信。 – Ouki
Perl內置了'mkdir',並且[File :: Copy](https://metacpan.org/module/File::Copy)提供了一個複製例程。使用它們通常比安全使用更安全,更快速。雖然它不會爲你翻譯'~'。 – Schwern
如果您確實需要運行外部程序來提示您輸入密碼等,您可能需要調查[Expect](http://search.cpan.org/perldoc?Expect.pm)模塊。 –