заполнить и прочитать массив со списком имен файлов - PullRequest
3 голосов
/ 11 июля 2011

Тривиальный вопрос.

#!/bin/bash

if test -z "$1"
then
  echo "No args!"
  exit
fi

for newname in $(cat $1); do
  echo $newname
done

Я хочу заменить это эхо внутри цикла на код массива код. Затем, после окончания цикла, я хочу снова прочитать массив и отобразить содержимое. Спасибо.

Ответы [ 3 ]

5 голосов
/ 11 июля 2011

Если файл, как показывает ваш код, имеет набор файлов, каждый в одной строке, вы можете присвоить значение массиву следующим образом:

array=(`cat $1`)

После этого для обработки каждого элемента вы можете сделать что-то вроде:

for i in ${array[@]} ; do echo "file = $i" ; done
2 голосов
/ 11 июля 2011
declare -a files
while IFS= read -r
do
    files+=("$REPLY") # Array append
done < "$1"
echo "${files[*]}" # Print entire array separated by spaces

cat не требуется для этого.

1 голос
/ 11 июля 2011
#!/bin/bash

files=( )
for f in $(cat $1); do
    files[${#files[*]}]=$f
done

for f in ${files[@]}; do
    echo "file = $f"
done
...