[问题]能不能在GREP的正则表达式里引用一个变量?

sh/bash/dash/ksh/zsh等Shell脚本
回复
ykk99114
帖子: 39
注册时间: 2007-10-24 13:19

[问题]能不能在GREP的正则表达式里引用一个变量?

#1

帖子 ykk99114 » 2008-05-06 20:15

RT.比如变量name存放一个用户名, 用who | grep +正则表达式来判断name里的用户名有没登录
头像
millenniumdark
论坛版主
帖子: 4159
注册时间: 2005-07-02 14:41
系统: Ubuntu 14.04 (Kylin)
联系:

#2

帖子 millenniumdark » 2008-05-06 20:53

可以。

这是bash的事,不是grep的事哦。

这种问题你自己试一下不就知道了。
ykk99114
帖子: 39
注册时间: 2007-10-24 13:19

#3

帖子 ykk99114 » 2008-05-06 20:56

那样怎么写?举个例子,自己试了很多种写法都不行
头像
laborer
帖子: 1016
注册时间: 2005-10-25 11:15
联系:

#4

帖子 laborer » 2008-05-06 22:40

代码: 全选

who | grep $USER
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
ykk99114
帖子: 39
注册时间: 2007-10-24 13:19

#5

帖子 ykk99114 » 2008-05-07 16:12

我是说正则表达式和引用变量一起,比如完全匹配$user的内容,是grep '^$user$'???关键是那个$,怎么在正则表达式里告诉它$user是一个变量
enst
帖子: 10
注册时间: 2008-03-25 21:16

#6

帖子 enst » 2008-05-07 16:23

who | grep "^$user "
ykk99114 写了:我是说正则表达式和引用变量一起,比如完全匹配$user的内容,是grep '^$user$'???关键是那个$,怎么在正则表达式里告诉它$user是一个变量
xiechy
帖子: 1074
注册时间: 2006-01-18 15:01

#7

帖子 xiechy » 2008-05-07 18:25

ykk99114 写了:我是说正则表达式和引用变量一起,比如完全匹配$user的内容,是grep '^$user$'???关键是那个$,怎么在正则表达式里告诉它$user是一个变量
shell会把$user转成它的值的,比如user="abc",grep 接收到的参数实际是 "^abc$",不过要用双引号,不要用单引号,否则shell是不会替换的
头像
millenniumdark
论坛版主
帖子: 4159
注册时间: 2005-07-02 14:41
系统: Ubuntu 14.04 (Kylin)
联系:

#8

帖子 millenniumdark » 2008-05-07 18:49

和你说了,是bash的问题,不是grep的问题。

命令都是先由bash过的。bash把变量都展开了,再传递给grep,grep根本不知道有什么变量。
ykk99114
帖子: 39
注册时间: 2007-10-24 13:19

#9

帖子 ykk99114 » 2008-05-07 23:37

就是假设user=linux,那么grep '^$user$'是bash先把linux代进去,即等于grep '^linux$'?不用考虑$user的$转不转义
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#10

帖子 bones7456 » 2008-05-07 23:56

ykk99114 写了:就是假设user=linux,那么grep '^$user$'是bash先把linux代进去,即等于grep '^linux$'?不用考虑$user的$转不转义
说了不要用单引号啊.
用双引号,你这句话就是正确的.
关注我的blog: ε==3
回复