shell awk- print问题
时间:2011-11-05
来源:互联网
照着书上抄了段代码,是shell脚本加载字符设备模块,但是有一句话老是出错,希望帮分析下
shell:
device="test_dev"
major=‘cat /proc/devices | awk "\\$2==\"$device\" {print \\$1}"’
mknod /dev/${device} c ${major} 0
书上是这么写的,不知到写那么多 \反斜杠有什么用?还有运行shell的时候总是会报错: mknod: 额外的操作数 "|"
我将上面的指令直接在终端中输入试了下,
major='cat /proc/devices | awk "\\$2==\"test_dev\" {print \\$1}"'
正常输出之后又会出现这样错误:
cat: |: 没有那个文件或目录
cat: awk: 没有那个文件或目录
cat: "\\$2==\"test_dev\": 没有那个文件或目录
cat: {print: 没有那个文件或目录
cat: \\$1}": 没有那个文件或目录
我尝试将 \ 斜杠去掉,major='cat /proc/devices | awk "$2=="test_dev" {print $1}"'
结果和上面差不多:
cat: |: 没有那个文件或目录
cat: awk: 没有那个文件或目录
cat: "$2=="test_dev": 没有那个文件或目录
cat: {print: 没有那个文件或目录
cat: $1}": 没有那个文件或目录
可是在 /dev目录下 设备驱动 /dev/test_dev 是确实存在的阿!
不知到这个指令怎么改才能正确实现搜索到该设备的主设备号阿?
shell:
device="test_dev"
major=‘cat /proc/devices | awk "\\$2==\"$device\" {print \\$1}"’
mknod /dev/${device} c ${major} 0
书上是这么写的,不知到写那么多 \反斜杠有什么用?还有运行shell的时候总是会报错: mknod: 额外的操作数 "|"
我将上面的指令直接在终端中输入试了下,
major='cat /proc/devices | awk "\\$2==\"test_dev\" {print \\$1}"'
正常输出之后又会出现这样错误:
cat: |: 没有那个文件或目录
cat: awk: 没有那个文件或目录
cat: "\\$2==\"test_dev\": 没有那个文件或目录
cat: {print: 没有那个文件或目录
cat: \\$1}": 没有那个文件或目录
我尝试将 \ 斜杠去掉,major='cat /proc/devices | awk "$2=="test_dev" {print $1}"'
结果和上面差不多:
cat: |: 没有那个文件或目录
cat: awk: 没有那个文件或目录
cat: "$2=="test_dev": 没有那个文件或目录
cat: {print: 没有那个文件或目录
cat: $1}": 没有那个文件或目录
可是在 /dev目录下 设备驱动 /dev/test_dev 是确实存在的阿!
不知到这个指令怎么改才能正确实现搜索到该设备的主设备号阿?
作者: DestinyHot 发布时间: 2011-11-05
放在命令行,应该是这样:
cat /proc/devices |awk ' $2 == "test_dev" {print $1}'
找/proc/devices 下设备名为test_dev的id
实际上是没有的
cat /proc/devices看看有哪些,比如:
cat /proc/devices |awk ' $2 == "raw" {print $1}'
就会有结果
在shell脚本中,\反斜杠一般用作转义字符,那些$符号等都需要转义
man mknod可以看到用法
一般执行是:
mknod console c 5 1
console为设备文件名,自己随便取
c是指字符型设备 (可选b,块设备)
5是主设备号 /dev/devices里面记录现有的设备
找个没有用的就可以了
1是次设备号,当你要给两个同样的设备上一个驱动的时候就要分了,从0开始,1就是第二个了 ,对于字符设备,次设备号就表示同类型设备的不同设备。
而你写的脚本,我认为错了,设备都没有怎么获取设备id,然后再创建。。这个脚本没看懂
cat /proc/devices |awk ' $2 == "test_dev" {print $1}'
找/proc/devices 下设备名为test_dev的id
实际上是没有的
cat /proc/devices看看有哪些,比如:
cat /proc/devices |awk ' $2 == "raw" {print $1}'
就会有结果
在shell脚本中,\反斜杠一般用作转义字符,那些$符号等都需要转义
man mknod可以看到用法
一般执行是:
mknod console c 5 1
console为设备文件名,自己随便取
c是指字符型设备 (可选b,块设备)
5是主设备号 /dev/devices里面记录现有的设备
找个没有用的就可以了
1是次设备号,当你要给两个同样的设备上一个驱动的时候就要分了,从0开始,1就是第二个了 ,对于字符设备,次设备号就表示同类型设备的不同设备。
而你写的脚本,我认为错了,设备都没有怎么获取设备id,然后再创建。。这个脚本没看懂
作者: xiangliangyu2008 发布时间: 2011-11-05
不会shell 觉得‘ 应该是反引号 不是单引号
mknod的方法真是过时了啊
mknod的方法真是过时了啊
作者: deep_pro 发布时间: 2011-11-05
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28