0

林查殺過程中的端口4444,但是這可以改變的,我有一個可變的港口,但我不能找到如何把這個指令串聯可變

netstat -ntlp | awk '$4~/:*4444$/{gsub(/\/.*/,"",$NF);cmd="kill -9 "$NF;system(cmd)}' 

我曾嘗試用:

netstat -ntlp | awk '$4~/:*${PORT}$/{gsub(/\/.*/,"",$NF);cmd="kill -9 "$NF;system(cmd)}' 

但它不工作

回答

1

shell變量不會在單引號中展開,但您不會不得不求助於雙引號和它們的過度轉義。剛剛離開單引號字符串!

netstat -ntlp | awk '$4~/:*'${PORT}'$/{gsub(/\/.*/,"",$NF);cmd="kill -9 "$NF;system(cmd)}' 

${PORT}如何遵循從上半年的近報價,並從之前下半年開始引號。

+0

謝謝我不知道關於cli上的單引號和雙引號,我是新的, – user115561 2012-03-27 20:53:36

0

變量不是單引號(')麪條膨脹。嘗試雙引號(")。

1

shell變量不會被單引號內的shell擴展。你必須用double引號"來包圍你的awk程序,並且做一堆更多的轉義封閉的程序,因爲bash會將所有嵌入的$解釋爲可變擴展。

+1

您可能必須在該字符串中擴展*和引號。在這裏看到更多關於Bash字符串轉義:http://wiki.bash-hackers.org/syntax/quoting – Alex 2012-03-27 20:43:49

+0

我一直在嘗試把\放在其他$和老的「,像這樣,netstat -ntlp | awk」 \ $ 4〜/:\ * $ PORT $/{gsub(/\/.*/,\\\\\,,, NF); cmd = \「kill -9 \」\ $ NF; system(cmd)}「 – user115561 2012-03-27 20:49:08

0

使用雙引號並轉義另一個'$'。