#!/bin/bash
awk 'BEGIN{print "'$HOSTNAME'"}'
执行结果:
[root@node1 pangbing_test]# sh test
node1
加上字符串拼接
#!/bin/bash
awk 'BEGIN{print "hostname = ""'$HOSTNAME'"}'
执行结果:
[root@node1 pangbing_test]# sh test
hostname = node1
#!/bin/bash
ip="192.168.1.1"
awk 'BEGIN{print "ip_addr = ""'$ip'" }'
执行结果如下:
[root@node1 test]# sh test
ip_addr = 192.168.1.1
-v形式的变量引用可阅读性更强一些
#这里传递了多个变量给awk,每一个-v对应一个变量(也只能有一对一)
#!/bin/bash
awk -v host=$HOSTNAME -v username=$USER -v system_digit=$HOSTTYPE \
'BEGIN{print host,username,system_digit}'
执行结果:
[root@node1 test]# sh test
node1 root x86_64
上边结果显示不是很直观,可以加上字符串拼接的效果
#注意点有三点
(1) 代码中的\是让文件中的代码换行,对于显示结果没有任何影响
(2)awk通过-v引用变量 在awk中使用变量不用"" + '' 包裹了
(3)在做字符串拼接的时候"字符串"和"变量"之间加空格对显示效果没有影响
#!/bin/bash
awk -v host=$HOSTNAME -v username=$USER -v system_digit=$HOSTTYPE \
'BEGIN{
print "linux-host-namt=" host,\
"linux-user-name=" username,\
"linux-system-digit=" system_digit
}'
执行结果如下:
[root@node1 test]# sh test
linux-host-namt=node1 linux-user-name=root linux-system-digit=x86_64
想让结果换行,可以在加上\n
#!/bin/bash
awk -v host=$HOSTNAME -v username=$USER -v system_digit=$HOSTTYPE \
'BEGIN{
print "linux-host-namt = " host "\n"\
"linux-user-name = " username "\n"\
"linux-system-digit = "system_digit
}'
执行结果如下
[root@node1 test]# sh test
linux-host-namt = node1
linux-user-name = root
linux-system-digit = x86_64
#!/bin/bash
#先定义好shell变量 awk在应用
ip="192.168.1.1"
awk -v awkip=$ip 'BEGIN{print awkip}'
#直接在awk中定义变量 然后在引用
awk -v awkip="192.168.1.1" 'BEGIN{print awkip}'
执行结果都能显示:
[root@node5 ~]# sh test.sh
192.168.1.1
192.168.1.1
字符串拼接后
#!/bin/bash
ip="192.168.1.1"
awk -v awkip=$ip 'BEGIN{print "间接引用awkip = " awkip}'
awk -v awkip="192.168.1.1" 'BEGIN{print "直接定义awkip = " awkip}'
执行结果:
[root@node5 ~]# sh test.sh
间接引用awkip = 192.168.1.1
直接定义awkip = 192.168.1.1