当前位置:网站首页>awk从入门到入土(4)用户自定义变量
awk从入门到入土(4)用户自定义变量
2022-07-04 08:38:00 【奇妙之二进制】
无类型
BEGIN{}{ num = 100; # 先存个整数 print("num is: "num); num = 3.1415926; # 再来存个浮点数 print("num is: "num); num = "I'm string."; # 最后看看字符串 print("num is:"num);}END{}
$echo “” |awk -f chapter_2_2-1.awk
num is: 100
num is: 3.14159
num is:I’m string.
awk变量就像所有其他脚本语言那样是无类型的,可以存储任意类型的值,并且可以随时进行改变,后面这点区别于支持类型推断的语言(如:C#,定义时虽然不用指定类型,但是一旦赋值后类型就固定了)。
无需定义
BEGIN{}{ print("var is:"var); # 我擦嘞,这直接就用上了}END{}
$echo “”|awk -f chapter_2_2-2.awk
var is:
变量随用随写,即使使用没初始化过的变量也不会报错。
全局性
BEGIN{ print("i in begin: "i);}{ ++i; print("i in body: "i);}END{ print("i in end: "i);}
$cat chapter_2_2-3.awk |awk -f chapter_2_2-3.awk
i in begin:
i in body: 1
i in body: 2
i in body: 3
i in body: 4
i in body: 5
i in body: 6
i in body: 7
i in body: 8
i in body: 9
i in body: 10
i in end: 10
awk中所有的变量,无论是出现在BEGIN中的、BODY中的、END中的,抑或是后面要提到的function中的,通通都是全局的,也就是说只要变量名字相同,无论在任何地方做出了修改,其值都会延续到下一段执行的代码行上。这是变量使用中特别要注意的地方,否则就可能引发各种莫名其妙的问题。
传参变量
BEGIN{ print(x); print("i in begin: "i);}{ ++i; print("i in body: "i);}END{ print("i in end: "i);}
$cat chapter_2_2-4.awk |awk -v x=“I’m X” -v i=100 -f chapter_2_2-4.awk
I’m X
i in begin: 100
i in body: 101
i in body: 102
i in body: 103
i in body: 104
i in body: 105
i in body: 106
i in body: 107
i in body: 108
i in body: 109
i in body: 110
i in body: 111
i in end: 111
变量除可以在程序中进行赋值外也可以在命令行调用的时候进行,如上面例程,x和i的值都是以命令行参数传入,通过这种参数传入的方式就扩大了通过脚本程序的适用性。
边栏推荐
- Educational Codeforces Round 119 (Rated for Div. 2)
- [go basics] 2 - go basic sentences
- 微服务入门:Gateway网关
- Question 49: how to quickly determine the impact of IO latency on MySQL performance
- FRP intranet penetration, reverse proxy
- Comparison between sentinel and hystrix
- manjaro安装微信
- Collections in Scala
- Newh3c - routing protocol (RIP, OSPF)
- 没有Kubernetes怎么玩Dapr?
猜你喜欢
Sports [running 01] a programmer's half horse challenge: preparation before running + adjustment during running + recovery after running (experience sharing)
Bishi blog (13) -- oral arithmetic test app
What if I forget the router password
Newh3c - network address translation (NAT)
1. Getting started with QT
DM8 database recovery based on point in time
Do you know about autorl in intensive learning? A summary of articles written by more than ten scholars including Oxford University and Google
The basic syntax of mermaid in typera
小程序容器技术与物联网 IoT 可以碰撞出什么样的火花
【性能测试】一文读懂Jmeter
随机推荐
Basic operations of databases and tables ----- view data tables
How to set multiple selecteditems on a list box- c#
Mouse over to change the transparency of web page image
Azure ad domain service (II) configure azure file share disk sharing for machines in the domain service
Sort by item from the list within the list - C #
[CV] Wu Enda machine learning course notes | Chapter 9
1. Qt入门
Laravel page load problem connection reset - PHP
一文了解数据异常值检测方法
Internal learning
manjaro安装微信
Go zero micro service practical series (IX. ultimate optimization of seckill performance)
How to solve the problem that computers often flash
Newh3c - network address translation (NAT)
A single element in an ordered array
How to use C language code to realize the addition and subtraction of complex numbers and output structure
一文了解數據异常值檢測方法
Unity-写入Word
User login function: simple but difficult
The upper layer route cannot Ping the lower layer route