我正在尝试从管道获取输入并使用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}' ) )
输出不是存储在数组中的内容...它打印一个空数组。
第一个解决方案没有意义,因为您正在设置名为 array
的 awk
变量,而不是该名称的 bash 变量。
第二种解决方案的问题是,您将bash
变量array
在管道内设置。将其与此程序进行比较:
echo abc | x=( $(cat) )
在这里,x 也将为空。管道的接收端是一个子进程,x将在此子进程中设置。
要实现您的目标,请使用
array=( $(/bin/clido $CMD 2> /dev/null | awk -v i="$C" '{print $3}') )