linux最常用命令awk变量传递
一. shell 向 awk 变量传递值
1.1 借助-v选项传递
借助-v选项,可以将外部值(并非来自stdin)传递给awk:
# VAR=10000
# echo | awk -v VARIABLE=$VAR '{ print VARIABLE }'
10000
1.2 作为awk参数传递
另一种传递外部变量方法:变量之间用空格分隔作为 awk 的命令行参数跟随在BEGIN、{} 和 END 语句块之后。
# var1="aaa"
# var2="bbb"
# echo | awk '{ print v1,v2 }' v1=$var1 v2=$var2
aaa bbb
1.3 全局变量传递
将shell全局变量传递给awk
# echo | awk '{print ENVIRON["PATH"]} '
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
export var="this is a test"
awk 'BEGIN{print ENVIRON["var"]}'
1.4 双引号引用
使用双引号,在双引号内部用单引号
var="test"
awk 'BEGIN{print "'$var'"}'
二. awk 向 shell 变量传递值
eval $(awk 'BEGIN{print "var1='str1';var2='str2'"}')
echo $var1
str1
echo $var2
str2
eval $(awk -F: '{printf("username=%s; password=%s;",$1,$2)}' /etc/passwd)
echo $username
echo $password
# 这里面的变量会被覆盖,因为每读取一行数据就赋值一次