sh/bash/dash/ksh/zsh等Shell脚本
-
ykk99114
- 帖子: 39
- 注册时间: 2007-10-24 13:19
#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的事哦。
这种问题你自己试一下不就知道了。
-
laborer
- 帖子: 1016
- 注册时间: 2005-10-25 11:15
-
联系:
#4
帖子
由 laborer » 2008-05-06 22:40
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的$转不转义
说了不要用单引号啊.
用双引号,你这句话就是正确的.