|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
这几天有个bug缠绕了我半天,于是就有了本文章。" O4 |1 g- k9 e8 C2 a
1 y+ m3 H1 g. r( [! c
触摸屏因为加了个笔记本键盘后不能用了,摘掉笔记本键盘后,触摸屏又可以用了,真是见鬼了。7 f+ ~, \" ]4 {" e) D- ?
% C. X9 R9 S7 q稍微研究一看,原来是加了笔记本键盘后导致TP驱动的设备节点改变了,比如说,以前是event4,加了笔记本键盘后event6,导致应用程序使用的设备节点跟TP驱动不匹配。
. g& ?' G _$ o2 ?$ q9 B5 z4 v9 Q% K
于是,我就纳闷了,以前的方法是在编译的时候写死了,比如配置为4了,运行的时候就是设置为4,不变了,其实这是有一定风险的,例如刚才说的例子。那么,怎么改呢?能不能在允许的时候判断出TP设备节点是哪个呢?答案是可以的。2 t4 E: Q9 u! w6 k3 r
7 f4 }' P& @$ S# J在添加自动获取TP的event_num方案时,遇到了一点点问题:
( o% n# _; R: }( i% ]6 b1 [# k( B& P+ A
一、在遍历设备节点时候,怎么记录下event_num,C语言很简单啊,i++,但是shell里面不能这么做。
0 _1 X4 q: _; o# |$ o G$ N0 Y5 A9 Y4 B2 Y1 _! F2 e+ B5 A
二、怎么截获字符串的前几个字符?2 @/ T( g0 o. t, _" l
; j% f' {7 a5 s0 [$ U
. Z9 `: ^8 ~+ ^) M& k
* B+ z, s+ y7 A5 A% d先解决第一个问题,在网上搜了一下,发现有个人写的很好,这里引用一下:
, Q+ m% M" S- U9 b' F, {* T$ \; @# A. W
a=1
( }" m9 B% P; c# v9 ka=$(($a+1))
G0 H2 |' u- U# j- H, L5 Ma=$[$a+1]
k* L0 W9 e: ka=`expr $a + 1`7 P/ [: }) Z7 T$ R4 {' _! q- ?
let a++ x7 u& o; A+ W/ u2 L! V) h) }9 N+ S
let a+=1# a# @. p, P( J( M, D
这几种方法都可以实现i++操作,其中我在实际中使用了 let a++! ~- r; S% q4 ^* |
/ d( p- V# R0 [
5 Q( a5 V; j5 l7 v/ v1 V0 J2 @; R0 P \第二个问题的方法其实也很多,我这里只说一种容易记住的:. b* U$ b ^+ P7 M' [ |
% \6 A1 U& Z8 F8 T. Q2 H! L* I
例如:有个字符串变量string=abcdefgh,我需要截取前面4个字符,那么shell应该怎么实现?6 C% ?. r: ]0 k; C3 F8 B! N/ N
) e" L8 _; N4 A5 B+ i9 |
8 x/ q0 O9 T3 S) x4 P* j- dstring="abcdefgh"" \! ~. D7 R' ?1 i1 G5 C( ?- U
cut_string=`echo $string|cut -c 1-4`( h7 c! {# E; K d2 m! P) `" I3 K% `4 y
结果:cut_string=abcd% v9 A9 s0 z ?
4 e- e+ d+ j4 D
以上2个问题是在实际解决问题的时候遇到的,虽然是不起眼的技术点,慢慢积累还是有用的。
' S3 Y# }+ h, c2 b& M" s3 t* O" i$ N) ?+ I" {# o
古语云:不积跬步,无以至千里;不积小流,无以成江海。# K O" {- c/ P3 ~# f9 Y' }- S9 r
2 I* n5 F. N$ v; v/ Q2 `0 T* v1 j% g
|
|