为什么在 "echo" 和变量中使用 awk 命令时无法得到类似的结果

Why I can't get similar result when using awk command in "echo" and variable

我在变量中有一些静态数据,如 table,它有列,行有分隔符,如“|”它们之间。 示例:

Number of row | Name column 1 | Name column 2 | Name column 3
      1       | var of col 1  | var of col 2  | var of col 3
...

我想使用 awk 命令从我的变量中获取指定行:

var="$staticData" | awk '=="1" {print}'

当我尝试通过“echo”打印出来时,我得到的结果是空的,但是当我使用:

echo "$staticData" | awk '=="1" {print}'

我的结果正常。

当你运行

var="$staticData" | awk '=="1" {print}'

您正在声明一个变量并将 awk 的结果重定向到标准输出。变量被存储,输出为空,因为变量只是声明的,你没有对它做任何事情。

当你运行

$ staticData='1|2|3|4|5'
$ var="$staticData" | awk '=="1" {print}'
$ echo $var

$

它是空的,因为它必须是。标准输出中没有任何内容

当你运行

 $ staticData='1|2|3|4|5'
 $ echo $staticData | awk -F '|' '{print }'
 1

在我的例子中,我将 echo 的输出重定向到 awk 命令。您需要了解重定向和标准输出(标准输出)在您正在做的事情的上下文中意味着什么。