linux shell 参数传递参数传递问题!

linux shell awk获得外部变量(变量传值)简介
- ITeye技术网站
博客分类:
这里提到awk,相信写shell的朋友都会接触到。AWK 是一种用于处理文本的编程语言工具。AWK 提供了极其强大的功能:
可以进行正则表达式的匹配
数学运算符
进程控制语句
内置的变量和函数
可以把awk看作一门完全的程序设计语言,它处理文本的速度是快得惊人的。现在很多基于shell 日志分析工具都可以用它完成。设计简单,速度表现很好。 涉及到以上六个方面内容,我会在以后文章中加以介绍。 这次主要说下,怎么样把外部变量传入到awk执行语句中。
一、基础:
awk [ -F re] [parameter...] ['pattern {action}' ] [-f progfile][in_file...]
awk一般语法如上面所说。
[chengmo@localhost ~]$ echo 'awk code' | awk 'BEGIN{print "start\n============="}{print $0}END{print "=========\nend"}'start=============awk code=========end
在 awk中两个特别的表达式,BEGIN和END,这两者都可用于pattern中(参考前面的awk语法),提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作。任何在BEGIN之后列出的操作(在{}内)将在awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果。
二、获得外部变量方法
1、获得普通外部变量
[chengmo@localhost ~]$ test='awk code'
[chengmo@localhost ~]$ echo | awk
'{print test}' test="$test"awk code[chengmo@localhost ~]$ echo | awk
test="$test" '{print test}' awk: cmd. line:1: fatal: cannot open file `{print test}' for reading (No such file or directory)
格式如:awk ‘{action}’
变量名=变量值
,这样传入变量,可以在action中获得值。 注意:变量名与值放到’{action}’后面。
[chengmo@localhost ~]$ echo | awk
'BEGIN{print test}' test="$test"
这种变量在:BEGIN的action不能获得。
2.BEGIN程序块中变量
[chengmo@localhost ~]$ test='awk code'
[chengmo@localhost ~]$ echo | awk -v test="$test" 'BEGIN{print test}'awk code[chengmo@localhost ~]$ echo | awk -v test="$test" '{print test}'
格式如:awk –v 变量名=变量值 [–v 变量2=值2 …] 'BEGIN{action}’
注意:用-v 传入变量可以在3中类型的action 中都可以获得到,但顺序在
action前面。
3.获得环境变量
[chengmo@localhost ~]$ awk
'BEGIN{for (i in ENVIRON) {print i"="ENVIRON[i];}}'AWKPATH=.:/usr/share/awkSSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpassSELINUX_LEVEL_REQUESTED=SELINUX_ROLE_REQUESTED=LANG=en_US.UTF-8.......
只需要调用:awk内置变量 ENVIRON,就可以直接获得环境变量。它是一个字典数组。环境变量名 就是它的键值。
浏览: 127945 次
来自: 上海
不错,我也遇到这样的问题了!autoLoad,加载后总是出现页 ...
不会啊,求
还不错 要是能实现复选框的选定就好了
运行你这个例子,发现有 bug啊,不能还原等等的
高手啊,正好遇到这个问题,谢谢!Shell脚本中参数传递方法介绍_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Shell脚本中参数传递方法介绍
来源:Linux社区&
作者:fengzhanhai
1. $# 传递到脚本的参数个数
2. $* 以一个单字符串显示所有向脚本传递的参数变量。与位置变量不同,此选项参数可超过9个
3. $$ 脚本运行的当前进程ID号
4. $! 后台运行的最后一个进程的进程ID号
5. $@ 与$#相同,但是使用时加引号,并在引号中返回每个参数
6. $- 显示shell使用的当前选项,与set命令功能相同
7. $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误
8. $()里面放命令,可以在脚本中执行该命令,并返回命令执行的输出.
相关资讯 & & &
& (02月08日)
& (09/02/:59)
& (02月21日)
& (02月08日)
& (08/16/:55)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款用户名:redhat88
文章数:27
访问量:2677
注册日期:
阅读量:1297
阅读量:3317
阅读量:430684
阅读量:1118748
51CTO推荐博文
awk与shell之间的变量传递方法&&&& linux下awk是个好东东,处理一些文本文件会非常方便。而在Linux下嘛,经常会和shell打交道,所以awk和shell之间的变量相互传递,有时还是很有必要的,所以简单总结一下吧。&awk中使用shell中的变量一、 “‘$var’”这种写法大家无需改变用‘括起awk程序的习惯,是老外常用的写法.如:var=”test” awk ‘BEGIN{print “‘$var’”}’这种写法其实际是双括号变为单括号的常量,传递给了awk.如果var中含空格,为了shell不把空格作为分格符,便应该如下使用:var=”this is a test” awk ‘BEGIN{print “‘”$var”‘”}’二、‘”$var”‘这种写法与上一种类似.如果变量含空格,则变为‘””$var””‘较为可靠.三、 export 变量,使用ENVIRON["var"]形式,获取环境变量的值例如: var=”this is a test”;awk ‘BEGIN{print ENVIRON["var"]}’四、可以使用awk的-v选项 &(如果变量个数不多,个人偏向于这种写法)例如: var=”this is a test” awk -v awk_var=”$var” ‘BEGIN {print awk_var}’这样便把系统变量var传递给了awk变量awk_var.&&awk向shell变量传递值“由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 ―C var2=$var2″&&参考资料:/art/1.htmhttp://www.ixpub.net/thread--1.html本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)& & AWK 提供了极其强大的功能:可以进行正则表达式的匹配样式装入流控制数学运算符进程控制语句内置的变量和函数& & 可以把awk看作一门完全的程序设计语言,它处理文本的速度是快得惊人的。现在很多基于shell 日志分析工具都可以用它完成。……
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
论文写作技巧
上一篇:下一篇:
相关经验教程

我要回帖

更多关于 shell 参数传递 的文章

 

随机推荐