Vmware之BEGIN
白羽 2019-07-11 来源 :网络 阅读 288 评论 0

摘要:本文将带你了解Vmware之BEGIN,希望本文对大家学Vmware有所帮助。

    本文将带你了解Vmware之BEGIN,希望本文对大家学Vmware有所帮助。

Vmware之BEGIN

命令行参数的一个重要限制是它们在BEGIN过程中是不可用的。也就是说,直到首行输入完成以后它们才可用。为什么?这是一个容易混乱的部分。从命令行传递的参数就好像文件名一样被处理。赋值操作知道这个变量(如果它是一个文件名)被求值时才进行。
   参阅下面的脚本,该脚本将变量n设置为一个命令行参数。
   awk ' BEGIN { print n }
   if (n == 1) print "Reading the first file"
   if (n == 2) print "Reading the second file"
   }' n=1 test n=2 test2
   这里有4个命令行参数: "n=1 "、"test" 、"n=2 "和"test2"。如果你现在还记着BEGIN过程即"在处理输入之前所要做的",你将会理解为什么在BEGIN过程中的参数n返回值为空,因此print语句将打印一个空行。如果第一个参数是一个文件而不是一个变量赋值。该文件会知道BEGIN过程执行后才被打开。
   第一个参数为变量n赋初值1 ,第二个参数提供了文件名。因此,对于test中的每一行,条件"n==1 "都为真。在读完test中的所有行之后,计算第三个参数,并将n赋值为2 。最后,第四个参数提供了第二个文件名。这时在主过程中的条件"n==2"为真。
   以这种方法对参数求值的后果是不能用BEGIN过程测试或检验命令行提供的参数。只有当输入一行后它们才能够使用。要了解这种局限性,可以通过编写规则"NR==1"并使用它的过程来检验参数的赋值。另一个方法是在调用awk之前在shell脚本中测试命令行参数。
   POSIX awk提供了一个解决这个问题的方法,即在任何输入被读入前定义参数。用-v选项指定要在执行BEGIN  过程之前得到变量赋值(也就是,在读入第一个输入行之前)。-v选项必须在一个命令行脚本前说明。例如:下列命令使用-v选项为多行记录设置记录分隔符。
   $ awk -F'\n" -v RS="" '{ print }'  phones.block
   每个传递给程序的变量赋值都需要一个不同的-v选项。
   和C程序语言类似,awk也提供系统变量ARGC和ARGV。因为这需要了解数组,我们将在第八幸"条件、循环和数组"中讨论这些特点。    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标系统运维之Vmware频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:13167058313
小职老师的微信号:13167058313

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    ICP许可  沪B2-20190160

站长统计