首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

关于bash中的反引号有关问题

2012-04-27 
关于bash中的反引号问题在一个shell脚本中看到这样一句mknod /dev/dsplink c `awk \\$2\dsplink\ {pr

关于bash中的反引号问题
在一个shell脚本中看到这样一句
mknod /dev/dsplink c `awk "\\$2==\"dsplink\" {print \\$1}" /proc/devices` 0

不太明白awk语句中为什么要用两个反斜杠,可以这样解释吗,在反引号中先对\\进行转义替换,变成'\'字符,然后执行awk命令,由于命令是双引号括起来的,所以再进行一次替换,将\$替换成'$'字符?


[解决办法]
mknod /dev/dsplink c `awk "\\$2==\"dsplink\" {print \\$1}" /proc/devices` 0
执行mknod命令,上面的红色部分首先在bash的input stream当中parse掉。

然后执行

awk "\$2=="dsplink" {print \$1}" /proc/devices
由于是双引号,bash再处理一次。然后交给awk处理。

最后执行awk时,相当于
awk ‘$2=="dsplink" {print $1}’ /proc/devices

热点排行