如何存储awk命令的输出,该命令使用shell脚本程序从管道获取输入到数组中



我正在尝试从管道获取输入并使用awk命令将输入的指定列存储到数组中。我在 UNIX sh 环境中工作

CMD=$1 #command which i am passing as an input.
C=$2  #column number which i want to store in array
array=
/usr/sbin/clido $CMD 2> /dev/null | awk "{array[NR]=$$C}"

并尝试了以下命令

/bin/clido $CMD 2> /dev/null | array=( $( awk -v i="$C" '{print $3}' ) )

输出不是存储在数组中的内容...它打印一个空数组。

第一个解决方案没有意义,因为您正在设置名为 arrayawk 变量,而不是该名称的 bash 变量。

第二种解决方案的问题是,您将bash变量array在管道内设置。将其与此程序进行比较:

echo abc | x=( $(cat) )

在这里,x 也将为空。管道的接收端是一个子进程,x将在此子进程中设置。

要实现您的目标,请使用

array=( $(/bin/clido $CMD 2> /dev/null | awk -v i="$C" '{print $3}') ) 

最新更新