分页: 1 / 1
[问题]能不能在GREP的正则表达式里引用一个变量?
发表于 : 2008-05-06 20:15
由 ykk99114
RT.比如变量name存放一个用户名, 用who | grep +正则表达式来判断name里的用户名有没登录
发表于 : 2008-05-06 20:53
由 millenniumdark
可以。
这是bash的事,不是grep的事哦。
这种问题你自己试一下不就知道了。
发表于 : 2008-05-06 20:56
由 ykk99114
那样怎么写?举个例子,自己试了很多种写法都不行
发表于 : 2008-05-06 22:40
由 laborer
发表于 : 2008-05-07 16:12
由 ykk99114
我是说正则表达式和引用变量一起,比如完全匹配$user的内容,是grep '^$user$'???关键是那个$,怎么在正则表达式里告诉它$user是一个变量
发表于 : 2008-05-07 16:23
由 enst
who | grep "^$user "
ykk99114 写了:我是说正则表达式和引用变量一起,比如完全匹配$user的内容,是grep '^$user$'???关键是那个$,怎么在正则表达式里告诉它$user是一个变量
发表于 : 2008-05-07 18:25
由 xiechy
ykk99114 写了:我是说正则表达式和引用变量一起,比如完全匹配$user的内容,是grep '^$user$'???关键是那个$,怎么在正则表达式里告诉它$user是一个变量
shell会把$user转成它的值的,比如user="abc",grep 接收到的参数实际是 "^abc$",不过要用双引号,不要用单引号,否则shell是不会替换的
发表于 : 2008-05-07 18:49
由 millenniumdark
和你说了,是bash的问题,不是grep的问题。
命令都是先由bash过的。bash把变量都展开了,再传递给grep,grep根本不知道有什么变量。
发表于 : 2008-05-07 23:37
由 ykk99114
就是假设user=linux,那么grep '^$user$'是bash先把linux代进去,即等于grep '^linux$'?不用考虑$user的$转不转义
发表于 : 2008-05-07 23:56
由 bones7456
ykk99114 写了:就是假设user=linux,那么grep '^$user$'是bash先把linux代进去,即等于grep '^linux$'?不用考虑$user的$转不转义
说了不要用单引号啊.
用双引号,你这句话就是正确的.