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就是其主设备号。
另: