用awk如何读取shell命令行上的参数(参数可以是带空格的)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用awk如何读取shell命令行上的参数(参数可以是带空格的)相关的知识,希望对你有一定的参考价值。
例如:运行./shell.sh "aa bb" 2 "cc dd",在awk中直接打印出shell的命令行参数,打印效果为aa bb2cc dd
echo|awk cmd="$@" "print cmd"追问我的意思是通过awk能一次打印出每一个命令行参数,我这处理文本时用到了命令行参数
追答awk 'BEGIN for(i=0;i<ARGC;i++) print ARGV[i]'awk 'BEGINfor(i=0;i<ARGC;i++) print ARGV[i]'追问这种处理不了带空格的命令行参数,如果用$@的话,就只能在BEGIN中打印命令行参数,在BEGIN后的结束后不能接任何的东西
参考技术A a=$1b=$2
c=$3
awk 'print '$a'$1' file
在Ubuntu下编写shell脚本读取文件
参考技术A 需求功能:创建测试用例文件 text :
创建shell脚本:
运行结果:
利用 awk 'ENDprint NR' [文件名] 来输出行数:
在shell脚本中添加该功能:
运行结果:
上面的shell文件只是把文件名写死在脚本中,并没有实际使用意义,所以需要编写一个指令来指定需要读取的文件,就像 vim [文件名] 一样
“$1” 代表第1个参数,也就是在 read 之后紧跟的参数,将其作为文件名传入:
将脚本移动至环境变量对应的目录中:(可以自己更改 /bin/xxx 来决定运行命令的名称,但注意不能重复)
sudo mv read /bin/read
然后添加运行权限:
sudo chmod 755 /bin/read
打开终端的目录可以是任何位置,通过以下命令即可运行shell脚本:
sudo read [文件路径]
同理,我们还可以自己为复杂指令编写shell脚本,来提高命令的使用效率,例如开关ss服务,打开锐捷客户端认证等等。
以上是关于用awk如何读取shell命令行上的参数(参数可以是带空格的)的主要内容,如果未能解决你的问题,请参考以下文章
awk从入门到入土(23)awk内置变量ARGCARGC--命令行参数传递