簡體   English   中英

如何在perl中調用unix命令

[英]how to invoke unix command in perl

我正在嘗試執行以下UNIX命令,但未執行

$array_of_tables= `dbsmp $srv_name`;
print "$array_of_tables\n";

請幫助我通過perl腳本找出數據庫中的表列表。

我也試圖通過使用以下命令將文件從路徑復制到其他路徑:

copy(`cd /osp/slee/service/$srv_name/bin/exec/script.txt`,`cd /osp/local/home/linus/amit/scripts`);

但出現錯誤:

Usage: copy(FROM, TO [, BUFFERSIZE])

請提供一些解決方案,謝謝

使用雙引號而不是反引號。

copy("/osp/slee/service/$srv_name/bin/exec/script.txt","/osp/local/home/linus/amit/scripts");

並取出cd

在Perl中,捕獲系統(shell)命令輸出的首選方法是qx()運算符。 請參閱http://perldoc.perl.org/perlop.html#Quote-Like-Operators

$array_of_tables = qx(dbsmp $srv_name);
print("$array_of_tables\n");

實際上,反引號也應該起作用,因此問題必須出在dbsmp命令上。 我不確定該命令是什么。 您將必須提供有關實用程序以及所見錯誤的更多信息。

為了進行比較,我可以使用以下shell命令以管道分隔表的形式檢索本地postgres數據庫中的表列表:

> psql -tAXq main postgres <<<\\d;

可以從Perl運行,如下所示:

> perl -e 'print(qx(psql -tAXq main postgres <<<\\\\d;));'

暫無
暫無

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

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