Chinaunix
标题:
初学者问
[打印本页]
作者:
liu3231
时间:
2003-04-17 15:24
标题:
初学者问
在/etc/profile文件里看到一个函数不太明白,请教各位了
pathmunge () {
if ! echo $PATH | /bin/egrep -q "(^|
$1($|
" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH
1
else
PATH=$1
PATH
fi
fi
}
关键是 if ! echo $PATH | /bin/egrep -q "(^|
$1($|
" ;这段不太明白
谢谢了
作者:
feeling
时间:
2003-04-17 15:31
标题:
初学者问
"(^|
$1($|
" ???
我也不明白!!!
作者:
feeling
时间:
2003-04-17 15:48
标题:
初学者问
pathmunge () {
if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
fi
}
复制代码
差不多明白了,就是不知道能不能说明白
你 echo $PATH 一下,就可能大致看出什么意思了。
应该属于正则表达式的范畴吧。
if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
复制代码
1. if 没有什么好说的吧
2. ! 是用来取反的,就是将后面语句 echo $PATH | /bin/egrep... 结果取反了;
3. echo $PATH 是打印变量PATH值的
(有些诲人不倦吧!)
4. | 竖线就是管道啦
;
5. egrep -q 是静态的输出(只输出是否找到的结果),如果发现就返回0,没有就返回-1 ;
6. 问题在这里:
(^|:)$1($|:)
复制代码
将给定的该函数的第一个参数拿过来格式化一下,其实就是判断该函数第一个参数是否是环境变量PATH里面已有的部分
^|: 如果该路径是在变量PATH的开始部分的话,就没有符合 : 在它前面,否则就一定有。
$|: 如果该路径是在变量PATH的末尾部分的话,就没有符合 : 在它后面,否则就一定有。
作者:
feeling
时间:
2003-04-17 15:51
标题:
初学者问
注:
该函数pathmunge () 的第一个参数一定是一个路径信息,如/home/yourname
就是函数原形里面的 $1
作者:
woodie
时间:
2003-04-17 15:58
标题:
初学者问
当":"与"
"联用时,系统自动将它转换为笑脸符:
egrep是grep的扩展版本,支持更多的扩展语法。
"(^|:)$1($|:)"--(这里使用了全角括号)将会匹配一下四种情况:
1:
$1: --在行首
1 --在行尾
$1 --$1的内容单独一行
整个一句的目的是检测路径$1内容是否已经包含在变量$PATH中,但$1作为路径名的一部分则不算。
作者:
liu3231
时间:
2003-04-17 16:37
标题:
初学者问
感谢feeling和woodie的解答,不好意思闹出笑话。
意思我基本明白了。我还想追问一下
(^|:)$1($|:)
复制代码
想这样的格式和代码我以后怎么用啊,现在我只是明白了在这个函数中的作用。能否再具体点一个字符一个字符的介绍一下,或者那有这方面的电子书
介绍一下。
谢谢了
作者:
liu3231
时间:
2003-04-17 16:39
标题:
初学者问
感谢feeling和woodie的解答,不好意思闹出笑话。
意思我基本明白了。我还想追问一下
(^|:)$1($|:)
复制代码
想这样的格式和代码我以后怎么用啊,现在我只是明白了在这个函数中的作用。能否再具体点一个字符一个字符的介绍一下,或者那有这方面的电子书
介绍一下。
谢谢了
作者:
woodie
时间:
2003-04-17 17:46
标题:
初学者问
小括号用于正则表达式的分组;
“|”这里是"或"的意思,“a|b”匹配a或b;
“^”匹配行首;
“$”匹配行尾。
作者:
feeling
时间:
2003-04-17 17:52
标题:
初学者问
(^|:)$1($|:)
1. 符号 "^"、"$"在正则表达式中分别标识记录首、尾;
2. (^|:)是符号 "^"、":" 二者取其一的意思;
3. ($|:)是符号 "$"、":" 二者取其一的意思;
4. (^|:)$1($|:) 就是一系列可能的组合,如 ^$1:、^$1$、:$1:、:$1$等;
复制代码
作者:
liu3231
时间:
2003-04-18 12:59
标题:
初学者问
我以完全明白,谢谢两位啦!
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2