Linux三剑客awk命令篇五:引用shell变量的几种方式
关于awk的原理等基本知识请参考上四篇:
Linux三剑客awk命令篇一之原理及基本命令
Linux三剑客awk命令篇二之命令操作符
Linux三剑客awk命令篇三之内部变量
Linux三剑客awk命令篇四之流程控制语句
编写shell脚本时,经常会使用到awk程序。
但是有些复杂的逻辑,可能需要在awk中使用在shell中定义的变量,而且awk程序处理之后,产生的中间变量,还需要在shell中继续处理。
下面我们就来简单谈一下引用shell变量的方式。
方式1、使用awk -v选项
案例:
#!/bin/bash
#在awk中引用shell变量
#auth:odysee
name=odysee
#这里的$name的目的就是证明在awk中不能直接引用shell变量
awk -v cname=$name 'BEGIN{print cname,$name}'
这里是通过cname变量间接的接受shell变量$name的值
执行脚本
方式2、使用"'$name'"
注意是"双引号+单引号+shell变量+单引号+双引号"的格式
案例:
#!/bin/bash
#在awk中引用shell变量
#auth:odysee
name="odysee"
awk 'BEGIN{print "'$name'"}'
~
执行脚本
方式3:"'"$var"'"
注意是"双引号+单引号+双引号+shell变量+双引号+单引号+双引号"的格式。
补充:
变量的值中包含空格,为了shell不把空格作为分隔符,则应使用方法3。
案例:
#!/bin/bash
#在awk中引用shell变量
#auth:odysee
name="odysee"
awk 'BEGIN{print "'"$name"'"}'
执行脚本
补充:
关于引用shell中的位置变量
执行脚本
以上三种方式推荐给大家。
下一篇:
Linux三剑客awk命令补充篇,案例分析
欢迎大家给予宝贵的意见或者建议。
欢迎大家补充或者共享一些其他的方法。
感谢支持。