shell脚本中的嵌套命令和管道命令

时间:2015-04-27 09:22:27

标签: bash shell grep nested

我在shell脚本中尝试了一些测试,如下所示:

line="100:xx"
echo "$line" | grep -Po \\d+

结果:1​​00

但是,

line="100:xx"
echo `echo "$line" | grep -Po \\d+`

结果为空

为什么?

2 个答案:

答案 0 :(得分:4)

因为反引号允许扩展,例如双引号字符串,所以你的一个反斜杠很快被吃掉了:

$ echo `echo "$line" | grep -Po \\d+ | cat`

$ echo `echo "$line" | grep -Po \\\d+`
100

话虽如此,请引用正则表达式

$ echo `echo "$line" | grep -Po '\d+'`
100

答案 1 :(得分:2)

您也可以这样做:

echo $(echo "$line" | grep -Po \\d+)

避免你的反斜杠被吃掉。