[問題] Perl中使用system失敗...

看板 Perl
作者
時間
留言 7則留言,3人參與討論
推噓 0  ( 0推 0噓 7→ )
各位大大好 小弟是Perl新手,最近想把awk放進Perl來使用, 程式如下: my $cmd=q(grep 'Only in ${keyword}' ./A.txt | awk -F '[ :]' '{print $3, $5}' > BB.log); system($cmd); 主要是想在A.txt中撈'Only in $keyword'的關鍵字 然後利用awk 分解字串(空格及:都要分解),印出第3、5個字串到BB.log中。 google看到好像因為這串有太多單引號,會誤導perl,因此需要先把他們塞進q()中 但這樣我還是不能執行.... 亂試了很多方法還是不能執行,跪求各位大大幫忙~謝謝!!!! --
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.81.111 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1605139805.A.EE5.html ※ 編輯: fabmanufab (1.162.81.111 臺灣), 11/12/2020 09:26:35
1Fflu: 把程式碼放到一個檔案 f.pl 再從shell中執行 perl -w f.pl 11/12 16:40
2Fflu: 試看看 11/12 16:40
我的程式是放在一個.pl檔裡面,但用perl -w 執行還是不行 我覺得system()這個指令很不穩定? 常常無法正常執行一些linux command 跪求高手幫助QQ ※ 編輯: fabmanufab (111.243.0.197 臺灣), 11/13/2020 15:28:26
3Fgugod: 何為「不能執行」呢?看起來沒有語法上的問題。 11/13 19:53
4Fgugod: 或許可以檢查一下system() 的傳回值是否為零 11/13 19:55
我直接在linux執行那行指令,可以把BB.log印出來 但是如果是藉由system來執行,BB.log是空的 ※ 編輯: fabmanufab (111.243.0.197 臺灣), 11/14/2020 09:51:25
5Fedwar: 能提A.txt幾行範例嗎? 11/14 12:54
6Fedwar: 提供 11/14 12:55
A.txt內容: Files 1234 and 5678 differ Only in /abc/def/ghj/: QWE ※ 編輯: fabmanufab (111.243.0.197 臺灣), 11/15/2020 15:32:00
7Fedwar: 看起來像diff結果. ${keyword}一定要放進grep的搜尋條件嗎? 11/16 00:41
對的 keyword是必須的 ※ 編輯: fabmanufab (36.227.140.104 臺灣), 11/16/2020 08:31:03