您的位置:首页 > 运维架构 > Linux

[linux device driver] Chapter 03:从scull_load了解awk

2015-03-23 12:18 302 查看
scull_load里有这样一句与awk相关的语句,从这里我们引入awk的讨论:

major=`cat /proc/devices | awk "\\$2==\"$module\" {print \\$1}"`


那么,为什么在awk后面使用这么多斜杠呢?

首先我们需要了解bash中双引号的使用。

在bash中,双引号只解释变量名前缀$、后引符`、转定义符\。

在这里,假如module=usb,那么awk必须使用第二列与”usb“进行比较,因为双引号内特殊字符除了刚才上面说的那三个,其他的都必须使用转定义,所以必须在双引号前加上转定义符,于是就有\"$module\"。

同样,为了不让双引号解释$1和$2,需要在前面加上转定义符号\,于是就有\$2,但是在bash脚本中$2还是传入参数,于是仍然需要在前面再加上转定义符号\,最后就成了\\$2,对于每一个引号内以$开头的的内容,前面必须加上两个转定义符\\。

上面的例子是从/proc/devices中查找scullc模块,并得到主设备号,major就是其主设备号。

另:

AWK简明教程

linux awk命令详解

AWK程序设计语言
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: