問一個簡單shell問題,將grep的輸出賦值給一個變量
好象沒有問題:
(a=`grep -c ' mysql' /dev/shm/l`; echo $a)
21
(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' file.tex`; echo $a
直接執行 grep -c '^\\bibitem' file.tex 輸出為正常值。
可能是正則表達和轉義哪塊有問題。
謝謝。
昵稱: michaelyung 時間: 2009-06-27 01:41:00
知道問題在哪了。賦值時,正則表達里的轉義符兩個backslash都需要轉義。所以應該是:
代碼:
a=`grep -c '^\\\\bibitem' paper.tex`;echo $a
愚蠢的錯誤。
多謝大家。
引用:
作者: michaelyung
剛試了一下,直接匹配沒有問題。
用了正則表達的時候就會有這問題,比如 加了-E選項也一樣,$a輸出為0. 附上我的例子,有一個tex文件,內含有:
代碼:
..... \bibitem .....
代碼:
$ a=`grep -c '^\\bibitem' file.tex`; echo $a
直接執行 grep -c '^\\bibitem' file.tex 輸出為正常值。 可能是正則表達和轉義哪塊有問題。 謝謝。 |
grep命令如下:
現在將輸出賦值給一個變量:
但是用myvar=`pwd`是沒有問題的,輸出付給了變量。是不是grep命令有特別注意的地方?謝謝。