设为首页 收藏本站
查看: 976|回复: 0

【转载】shell中awk参数的传递问题

[复制链接]

尚未签到

发表于 2015-4-29 09:29:23 | 显示全部楼层 |阅读模式
  关于awk 接受shell 变量参数传递的问题 ( 2006/4/28 )
  本文出处:
  http://bbs.chinaunix.net/viewthread.php?tid=747440&page=1&extra=page%3D1#pid5088268
  
  本文出处:
  http://bbs.chinaunix.net/viewthread.php?tid=747440&page=1&extra=page%3D1#pid5088268
  查看分区信息:
# df -k
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda11 497829 110331 361796 24% /
/dev/hda1 54416 3507 48100 7% /boot
/dev/hda8 4079648 2933032 939380 76% /home
/dev/hda13 303344 15 287668 1% /tmp
/dev/hda6 6048320 2071524 3669556 37% /usr
/dev/hda7 6048320 4485312 1255768 79% /usr/oracle
/dev/hda5 9076364 4931708 3683596 58% /usr/oracle/dbs
/dev/hda9 1209572 578852 569276 51% /var
/dev/hda12 497829 15503 456624 4% /var/log

给变量赋值50
dfspace=50
# echo $dfspace
50
取出空间利用率大于50%的,打印出分区名:(这个结果正确)
[iyunv@netlog]# df -k| awk '{if($5+0 >= 50) print $6}'
/home
/usr/oracle
/usr/oracle/dbs
/var
取出空间利用率大于50%的,打印出分区名:(这里使用调用变量参数,结果不正确
,将所有分区都列出来了!!)这个参数应该如何写呢?谢谢了啊!!
# df -k| awk '{if($5+0 >= $dfspace) print $6}'
/
/boot
/home
/tmp
/usr
/usr/oracle
/usr/oracle/dbs
/var
/var/log
===============
  终于解决了,应该使用语句来实现:
df -k| awk '{if($5+0 > dfspace2) print $6}' dfspace2=$dfspace
  在下面的站点找到解决问题的原因 :
http://bbs.linuxsky.net/viewthread.php?tid=1869
  2) 自定义变量
1) 定义变量: varname=value (自定义变量不需先声明后使用,赋值语句同时完成变量定义和初始化)
2) 在表达式中出现不带双引号的字符串都被视为变量,如果之前未被赋值,默认值为0或空字符串。
3) 向命令行awk程序传递变量的值:
① Usage: awk 'awk_script' awkvar1=value1 awkvar2=value2 .... input_file
eg: awk '{if ($5 < ARG) print $0 }' ARG=100 input_file
② awkvar可以是awk内置变量或自定义变量。
③ awkvar的值将在awk开始对输入文件的第一条记录应用awk_script前传入。如果在awk_script中已经对某个变量赋值,那么在命令行上传人到该变量的值就会无效(实际上是awk_script中的赋值语句覆盖了从命令行上传入的值)。
④ 在awk脚本程序中不能直接使用shell的变量。通过使用下面的语法可达到这样的效果。
awk 'awk_script' awkvar1=shellvar1 awkvar2=shellvar2 .... input_file
eg: awk '{if (v1 == "root") {print "User name is root!"}}' v1=$USER input_file
⑤ 可以向awk脚本传递变量的值,与上面的类似。
awk_script_file awkvar1=value1 awkvar2=value2 ... input_file
④ 在awk脚本程序中不能直接使用shell的变量。通过使用下面的语法可达到这样的效果。
awk 'awk_script' awkvar1=shellvar1 awkvar2=shellvar2 .... input_file
eg: awk '{if (v1 == "root") {print "User name is root!"}}' v1=$USER input_file
⑤ 可以向awk脚本传递变量的值,与上面的类似。
awk_script_file awkvar1=value1 awkvar2=value2 ... input_file
  来自http://hi.baidu.com/zhangxiaohu108/blog/item/015c11ed28358831279791d5.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-61794-1-1.html 上篇帖子: shell通过curl发送get请求,做一些很烦琐的事 下篇帖子: 26、linux shell常用的几个函数,diff
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表