当前位置:网站首页>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的值都是以命令行参数传入,通过这种参数传入的方式就扩大了通过脚本程序的适用性。
边栏推荐
- 4 small ways to make your Tiktok video clearer
- manjaro安装微信
- SSRF vulnerability exploitation - attack redis
- Famous blackmail software stops operation and releases decryption keys. Most hospital IOT devices have security vulnerabilities | global network security hotspot on February 14
- What if I forget the router password
- Flutter integrated amap_ flutter_ location
- If the array values match each other, shuffle again - PHP
- C#实现一个万物皆可排序的队列
- Mouse over to change the transparency of web page image
- FOC控制
猜你喜欢

运动【跑步 01】一个程序员的半马挑战:跑前准备+跑中调整+跑后恢复(经验分享)

【Go基础】2 - Go基本语句

Question 49: how to quickly determine the impact of IO latency on MySQL performance

FOC control

Comparison between sentinel and hystrix
![[test de performance] lire jmeter](/img/c9/25a0df681c7ecb4a0a737259c882b3.png)
[test de performance] lire jmeter

DM8 uses different databases to archive and recover after multiple failures

Moher College phpmailer remote command execution vulnerability tracing

FOC控制

Codeforces Global Round 21(A-E)
随机推荐
A method for detecting outliers of data
Codeforces Round #750 (Div. 2)(A,B,C,D,F1)
How to improve your system architecture?
How to get bytes containing null terminators from a string- c#
Mouse over to change the transparency of web page image
es6总结
DM8 database recovery based on point in time
猜数字游戏
go-zero微服务实战系列(九、极致优化秒杀性能)
1. Getting started with QT
09 softmax regression + loss function
【性能測試】一文讀懂Jmeter
DM8 uses different databases to archive and recover after multiple failures
广和通高性能4G/5G无线模组解决方案全面推动高效、低碳智能电网
Question 49: how to quickly determine the impact of IO latency on MySQL performance
Leetcode 23. 合并K个升序链表
Take you to master the formatter of visual studio code
Technology sharing | MySQL parallel DDL
Cannot click button when method is running - C #
Moher College phpmailer remote command execution vulnerability tracing