当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 脚本编程求助
帖子发表于 : 2015-03-05 18:24 

注册: 2015-03-05 18:11
帖子: 2
系统: ubuntu
送出感谢: 1
接收感谢: 0 次
想开机运行一个系统服务,但是这个服务需要传递一个参数,参数是接在电脑上的USB设备的编号
usb编号 通过lsusb获得信息,通过usb设备的信息参数得到设备的编号,如
代码:
root@server:~# lsusb
Bus 001 Device 002: ID 0781:5151SanDisk Corp. Cruzer Micro Flash Drive
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub


返回的“SanDisk Corp. Cruzer Micro Flash Drive”这个名称是固定的,要获得是前面的参数值“0781:5151”

执行另外一个命令xxxxx,获得如下信息
代码:
List USB devices
 - busid 1-1 (0781:5151)
         1-1:1.0 -> usb-storage

根据前面的值“0781:5151”返回值,匹配到语句“ - busid 1-1 (0781:5151)”,提取出前面的编号“1-1”
上面的“1-1”就是要找的值

然后把这个参数“1-1” 作为参数,开机运行服务程序 XXXX 1-1
请教大家这个脚本怎么写?谢谢


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 脚本编程求助
帖子发表于 : 2015-03-05 19:20 
头像

注册: 2010-04-10 16:14
帖子: 2903
系统: Arch Linux
送出感谢: 8
接收感谢: 69
代码:
#!/bin/bash
ID=$(lsusb | awk '/SanDisk Corp. Cruzer Micro Flash Drive/ {for(i=1;i<=NF;i++) if($i=="ID") print $(i+1)}')
BID=$(xxxxx | awk '/'"$ID/"' {for(i=1;i<=NF;i++) if($i=="busid") print $(i+1)}')
XXXX $BID


_________________
dz,U,EIS. cies.
dz-cies@github
小香猪杀手@cc98.org


最后由 susbarbatus 编辑于 2015-03-09 16:31,总共编辑了 1 次

页首
 用户资料  
 
3 楼 
 文章标题 : Re: 脚本编程求助
帖子发表于 : 2015-03-06 16:49 

注册: 2015-03-05 18:11
帖子: 2
系统: ubuntu
送出感谢: 1
接收感谢: 0 次
susbarbatus 写道:
代码:
#!/bin/bash
ID=$(lsusb | awk '/SanDisk Corp. Cruzer Micro Flash Drive/ {for(i=1;i<=NF;i++) if($i=="ID") print $(i+1)}')
BID=$(xxxxx | awk -v id=$ID '/'"$id/"' {for(i=1;i<=NF;i++) if($i=="busid") print $(i+1)}')
XXXX $BID

感谢回复
有点小问题,是我说的不清楚
在查找第二处的返回结果地方有多个返回值的,如
代码:
- busid 1-1 (0781:5151)
         1-1:1.0 -> usb-storage

- busid 1-2 (2081:5151)
         1-1:2.0 -> usb-storage

- busid 1-3 (2221:5151)
         1-1:3.0 -> usb-storage


可能有多种选择,应该是从多个中找出 0781:5151 对应的前面busid 1-1
现在是直接返回了三个连着的值了,怎么修改找到对应的
- busid 1-1 (0781:5151)
1-1:1.0 -> usb-storage
里面的1-1呢?
谢谢


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 脚本编程求助
帖子发表于 : 2015-03-09 16:33 
头像

注册: 2010-04-10 16:14
帖子: 2903
系统: Arch Linux
送出感谢: 8
接收感谢: 69
我知道你的意思,是我不小心写错了,开始想用 awk 的 -v 去传值的,半途又改成用 shell 的办法传值了,两种方法混在一起了。
2楼重新编辑过了,现在应该是对的结果。


_________________
dz,U,EIS. cies.
dz-cies@github
小香猪杀手@cc98.org



_________________
评价: 3.7% beiqibing
 
页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译