从命令输出(stdout)读取一行到数组

时间:2013-04-24 16:45:35

标签: ksh

我写了这样一个剧本:

#!/usr/bin/ksh93

while read -A value; do
  print -- "I am here"
  print -- ${value[@]}
done < `<command>`

我的目的是重定向command的stdout输出以填充数组。以上用法的灵感来自以下链接:http://www.unix.com/shell-programming-scripting/66884-array-ksh-elems-containing-spaces.html,但在我的情况下不起作用。

有人能告诉我失败的原因吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

使用的示例命令是ls -1 - 带有shell / bin / ksh。这将命令的输出存储在数组中。

ls -1 | { \
   n=0;
   set -A array
   while read line; do
        array[$n]=$line
        let n=$n+1
   done;
}

 # output commands here
    for l in ${array[@]}
    do
        echo $l
    done