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

Tiế*_*ạnh 3 bash shell grep nested

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

line="100:xx"
echo "$line" | grep -Po \\d+
Run Code Online (Sandbox Code Playgroud)

结果:100

但,

line="100:xx"
echo `echo "$line" | grep -Po \\d+`
Run Code Online (Sandbox Code Playgroud)

结果为空

为什么?

gle*_*man 5

因为反引号允许像双引号字符串这样的扩展,所以你的反斜杠之一被吃得太快了:

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

$ echo `echo "$line" | grep -Po \\\d+`
100
Run Code Online (Sandbox Code Playgroud)

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

$ echo `echo "$line" | grep -Po '\d+'`
100
Run Code Online (Sandbox Code Playgroud)