[英]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.