awk与shell变量互相赋值
⼀、awk给shell变量赋值
01. #!/bin/bash
02.
03. var=`ls - | awk '{print $5}'`
04. echo $var
复制代码
⼆、awk引⽤shell变量
awk [ -F re] [] ['pattern {action}' ] [-f progfile][]
awk⼀般语法如上⾯所说。
如:
shell代码
01. [chengmo@localhost ~]$ echo 'awk code' | awk 'BEGIN{print "start\n============="}{print $0}END{print "=========\nend"}'
02. start
03. =============
04. awk code
05. =========
06. end
复制代码
在 awk中两个特别的表达式,BEGIN和END,这两者都可⽤于pattern中(参考前⾯的awk语法),提供BEGIN和END的作⽤是给程序赋予初始状态和在程序结束之后执⾏⼀些扫尾的⼯作。任何在BEGIN之后列出的操作(在{}内)将在awk开始扫描输⼊之前执⾏,⽽END之后列出的操作将在扫描完全部的输⼊之后执⾏。因此,通常使⽤BEGIN来显⽰变量和预置(初始化)变量,使⽤END来输出最终结果。
获得外部变量⽅法
1、获得普通外部变量
01. [chengmo@localhost ~]$ test='awk code'
02. [chengmo@localhost ~]$ echo | awk  '{print test}' test="$test"
03. awk code
复制代码
格式如:awk ‘{action}’  变量名=变量值,这样传⼊变量,可以在action中获得值。注意:变量名与值放到’{action}’后⾯。
01. [chengmo@localhost ~]$ echo | awk  'BEGIN{print test}' test="$test"
复制代码
这种变量在:BEGIN的action不能获得。
2.BEGIN程序块中变量
01. [chengmo@localhost ~]$ test='awk code'
02. [chengmo@localhost ~]$ echo | awk -v test="$test" 'BEGIN{print test}'
03. awk code
04. [chengmo@localhost ~]$ echo | awk -v test="$test" '{print test}'
05. awk code
复制代码
格式如:awk –v 变量名=变量值 [–v 变量2=值2 …] 'BEGIN{action}’  注意:⽤-v 传⼊变量可以在3中类型的action 中都可以获得到,但顺序在  action前⾯。
3.获得环境变量
01. [chengmo@localhost ~]$ awk  'BEGIN{for (i in ENVIRON) {print i"="ENVIRON[i];}}'
02. AWKPATH=.:/usr/share/awk
03. SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
04. SELINUX_LEVEL_REQUESTED=
05. SELINUX_ROLE_REQUESTED=
06. LANG=en_US.UTF-8
07. .......
复制代码
只需要调⽤:awk内置变量 ENVIRON,就可以直接获得环境变量。它是⼀个字典数组。环境变量名就是它的键值。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。