2013-04-24 3 views
2

я написал такой сценарий:прочитать строку из команды из (стандартный вывод) в массив

#!/usr/bin/ksh93 

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

Мое намерение состоит в том, чтобы перенаправить вывод стандартный вывод о command для заполнения массива. Вышеуказанное использование основано на этой ссылке: http://www.unix.com/shell-programming-scripting/66884-array-ksh-elems-containing-spaces.html, но в моем случае это не работает.

Любой может сказать мне причину отказа?

Спасибо!

ответ

3

Используемая команда используется ls -1 - с оболочкой/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 
+1

спасибо. Тем не менее, я смущен, почему мой код не удался. Это выглядит невинно. –

+0

Очень полезно. Я тоже хотел бы больше объяснить, почему ваш пример работает и почему код OP не работает. – zarose

Смежные вопросы