awk使用shell变量及shell使用awk中的变量
来源:互联网 发布:柯林斯 知乎 编辑:程序博客网 时间:2024/05/21 02:48
在写shell脚本时,经常会使用到awk程序。但是有些复杂的逻辑,可能需要在awk中使用在shell中定义的变量,而且awk程序处理之后,产生的中间变量,还需要在shell中继续处理。
一、那如何在awk中使用在shell中定义的变量呢?
方法一:使用"'把shell变量包起来,即"'$var'";注意是“双引号+单引号+shell变量+单引号+双引号”的格式。
这种写法大家无需改变用'括起awk程序的习惯,是老外常用的写法;这种写法其实际是双括号变为单括号的常量,传递给了awk.
例如:
var="abc"
awk 'BEGIN{print "'$var'"}'
方法二:和方法一类似,但使用"'"把shell变量包起来,即"'"$var"'";注意是“双引号+单引号+双引号+shell变量+双引号+单引号+双引号”的格式。
如果变量的值中包含空格,为了shell不把空格作为分隔符,则应使用方法二。
例如:
var="this a test"
awk 'BEGIN{print "'"$var"'"}'方法三:export变量,然后在awk中使用ENVIRON["var"]形式获取环境变量的值
例如:var="this a test"; export var;
方法四:使用awk -v选项;
当变量不是很多时,建议使用这种方式。
var="this a test"
二、那shell中如何使用awk程序中定义的变量呢?
“由awk向shell传递变量”,其思想无非是用awk(sed/perl等也是一样)输出若干条shell命令,然后再用shell去执行这些命令。
例如:
eval $(awk 'BEGIN{print "var1='str1';var2='str2'"}')
或者eval $(awk '{printf("var1=%s; var2=%s; var3=%s;",$1,$2,$3)}' abc.txt)
之后可以在当前shell中使用var1,var2等变量了。
echo "var1=$var1 ----- var2=$var2"
三、一个检测磁盘空间使用情况的脚本的例子
#!/bin/sh
#文件系统名字
FILE_SYSTEM_NAME="rootfs"
#文件系统挂在的目录
MOUNTED_ON="/"
# shell命令使用awk中定义的变量spaceSize
eval $(df -P | awk '$1=="'"$FILE_SYSTEM_NAME"'" && $6=="'$MOUNTED_ON'" {printf("spaceSize=%s;",$5)}')
echo "主磁盘的使用空间为$spaceSize"
spaceSize=`echo $spaceSize | cut -d% -f1`
if [ aa$spaceSize = "aa" ]; then
spaceSize=-1
fi
if [ $spaceSize -le 85 ]; then
echo '主磁盘的使用空间充足'
elif [ $spaceSize -eq -1 ]; then
echo '没有找到主磁盘使用空间,请检查脚本'
else
echo '主磁盘的使用空间超过阈值'
fi
- awk使用shell变量及shell使用awk中的变量
- awk使用shell中的变量
- awk使用shell变量,shell获取awk中的变量值
- awk使用shell变量,shell获取awk中的变量值
- awk使用shell变量,shell获取awk中的变量值
- awk中使用shell中的变量
- AWK中使用shell变量
- awk 中使用shell 变量
- awk中使用shell变量
- awk使用shell变量问题
- shell中使用awk,awk引用shell变量的方法
- awk使用shell变量,shell获取awk中…
- 转:awk使用shell变量,shell获取awk中的变量值
- awk中使用shell变量疑问
- sed和awk中使用shell变量
- sed和awk中使用shell变量
- [Shell]: awk当中使用外部变量
- sed和awk中使用shell变量
- Vue.js使用Leaflet地图
- RHEL7静态IP配置
- i2c驱动程序(2) i2c_driver probe被调用的流程分析
- Qoo10选品数据宝典,小卖家与新手的必备武器
- HTML之一些效果的实现
- awk使用shell变量及shell使用awk中的变量
- TensorFlow番外篇——module 'tensorflow' has no attribute 'xxx'
- LeetCode 6. ZigZag Conversion
- Android5.0隐式启动服务
- Nodejs之静态资源处理
- MySQL学习笔记---基础概念和一些基础SQL语句(一)
- 爬虫爬取网页,并用浏览器打开
- Ubuntu语言设置汉语无法移动
- Hibernate 什么梗