grep查询⽂本:问⼀个简单shell问题,将grep的输出赋值给⼀
个变量
问⼀个简单shell问题,将grep的输出赋值给⼀个变量
⽤grep命令得到的输出赋值给⼀个变量不成功。
grep命令如下:
代码:
$ grep -c '^abc'
输出为22,表⽰中以abc开头的⾏的数⽬。
grep命令有什么用现在将输出赋值给⼀个变量:
代码:
myvar=`grep -c '^abc' `
得到的$myvar值为0,貌似是将命令的返回状态值付给了变量,⽽不是命令的输出内容。
但是⽤myvar=`pwd`是没有问题的,输出付给了变量。是不是grep命令有特别注意的地⽅?谢谢。
昵称: michaelyung  时间: 2009-06-26 16:32:00
好象没有问题:
(a=`grep -c ' mysql' /dev/shm/l`; echo $a)
21
昵称: openfree  时间: 2009-06-26 20:39:00
引⽤:
作者: openfree
好象没有问题:
(a=`grep -c ' mysql' /dev/shm/l`; echo $a)
21
刚试了⼀下,直接匹配没有问题。
⽤了正则表达的时候就会有这问题,⽐如
加了-E选项也⼀样,$a输出为0.
附上我的例⼦,有⼀个tex⽂件,内含有:
代码:
..... \bibitem .....
⽤以下的命令:
代码:
$ a=`grep -c '^\\bibitem' `; echo $a
输出为0。
直接执⾏ grep -c '^\\bibitem' 输出为正常值。
可能是正则表达和转义哪块有问题。
谢谢。
昵称: michaelyung  时间: 2009-06-27 01:41:00
知道问题在哪了。赋值时,正则表达⾥的转义符两个backslash都需要转义。所以应该是:
代码:
a=`grep -c '^\\\\bibitem' `;echo $a
愚蠢的错误。
多谢⼤家。
引⽤:
作者: michaelyung
刚试了⼀下,直接匹配没有问题。
⽤了正则表达的时候就会有这问题,⽐如
加了-E选项也⼀样,$a输出为0.
附上我的例⼦,有⼀个tex⽂件,内含有:
代码:
..... \bibitem .....
⽤以下的命令:
代码:
$ a=`grep -c '^\\bibitem' `; echo $a
输出为0。
直接执⾏ grep -c '^\\bibitem' 输出为正常值。可能是正则表达和转义哪块有问题。
谢谢。