AWK 不在方括号内打印变量

AWK not printing variable inside square brackets

我有一个 bash 脚本,关键部分是这样的:

#!/bin/sh


read IP (Example: 192.168.2.46)

var1= $IP 


awk -v var="$var1" 'NR==3{print "      \"server\": [ \"var:666\" ]"}7' /home/mark/server.conf > /home/mark/tmp && mv -f /home/mark/tmp /home/mark/server.conf

期望的输出是:

"server": [ "192.168.2.46:666" ]

但是,我得到:

"server": [ "var1:666" ]

为什么,以及如何解决?

只需将 awk 变量 var 放在双引号外即可。

awk -v var="$var1" 'NR==3{print "      \"server\": [ \""var":666\" ]"}7'

示例:

$ var1="123"
$ echo '1' | awk -v var="$var1" '/1/{print "foo\""var"\"bar"}'
foo"123"bar