字符串bash中的连接变量

时间:2012-03-27 20:33:56

标签: linux bash command-line concatenation command-line-interface

我在端口4444中杀死进程,但是这可以改变,我有一个变量PORT中的端口,但是我无法找到如何将它放在指令中

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)}'

但它不起作用

4 个答案:

答案 0 :(得分:1)

Shell变量不会被单引号内的shell扩展。你必须使用 double 引号"包围你的awk程序,然后更多地转义所附的程序,因为bash会将所有嵌入的$解释为变量扩展

答案 1 :(得分:1)

Shell变量不会在单引号中展开,但必须求助于双引号及其过度转义。只需离开单引号字符串!

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

查看${PORT}如何跟随前半部分的近距离报价,并在下半部分的开始报价之前。

答案 2 :(得分:0)

变量不会在单引号(')字符串中展开。尝试使用双引号(")。

答案 3 :(得分:0)

使用双引号并转义其他'$'。