awk当中使用外部变量

awk当中使用外部变量
1.awk命令使用双引号的情况下

此时在awk命令里面使用"$var"就可以引用外部环境变量的var的值

$ var="BASH";echo"unixscript"|awk"gsub(/unix/,\"$var\")"

2.awk命令使用单引号的情况下
此时在awk命令里面使用"‘“$var”’"就可以应用外部变量var的值,注意五个点表示两个双引号之间有一个单引号

$ var="BASH";echo"unixscript"|awk′gsub(/unix/,"′"var"'")'

3.awk的参数-v (推荐)
这个没什么好解释的,应该是用得比较多的一种方法了,就是使用-v参数,加带一个变量极其赋值

$ echo "unix script"| awk -v var="BASH" 'gsub(/unix/, var)'

4.如下, ${os}为awk外部变量:

#!/bin/bash
os_types=(windows linux macos)
for os in ${types[@]} 
do
    conf_file="${os}.conf"
    cat ${conf_file} | awk -F "\t" '{print "'${os}' "$1"    "$3}' 
done

5.export变量,然后在awk中使用ENVIRON[“var”]形式获取环境变量的值

例如:

var="this a test"; export var;
awk 'BEGIN{print ENVIRON["var"]}'  
shell中如何使用awk程序中定义的变量呢?
“由awk向shell传递变量”,其思想无非是用awk(sed/perl等也是一样)输出若干条shell命令,然后再用shell去执行这些命令。

例如:
eval (awk′BEGINprint"var1=′str1′;var2=′str2′")或者eval(awk′BEGINprint"var1=′str1′;var2=′str2′")或者eval(awk '{printf("var1=%s; var2=%s; var3=%s;",1,1,2,$3)}' abc.txt)

之后可以在当前shell中使用var1,var2等变量了。
echo "var1=var1−−−−−var2=var1−−−−−var2=var2"

三、一个检测磁盘空间使用情况的脚本的例子
#!/bin/sh
#文件系统名字
FILE_SYSTEM_NAME="rootfs"

#文件系统挂在的目录
MOUNTED_ON="/"

#shell命令使用awk中定义的变量spaceSize
eval (df−P|awk′(df−P|awk′1=="'"FILE_SYSTEM_NAME"'" &&FILE_SYSTEM_NAME"'" &&6=="'MOUNTED_ON'" {printf("spaceSize=%s;",$5)}') 
echo "主磁盘的使用空间为MOUNTED_ON'" {printf("spaceSize=%s;",$5)}') echo "主磁盘的使用空间为spaceSize"

spaceSize=`echo spaceSize|cut−dif[aaspaceSize|cut−dif[aaspaceSize = "aa" ]; then
    spaceSize=-1
fi

if [ spaceSize−le85];then echo′主磁盘的使用空间充足′elif[spaceSize−le85];then echo′主磁盘的使用空间充足′elif[spaceSize -eq -1 ]; then
    echo '没有找到主磁盘使用空间,请检查脚本'
else
    echo '主磁盘的使用空间超过阈值'
fi
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值