使用文件名列表填充和读取数组

时间:2011-07-11 10:05:06

标签: arrays bash populate

琐碎的问题。

#!/bin/bash

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

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

我想用数组填充代码替换循环内的回声。 然后,在循环结束后,我想再次读取数组并回显内容。 感谢。

3 个答案:

答案 0 :(得分:5)

如果您的代码显示的文件有一组文件,每个文件都在一行中,您可以按如下方式将值分配给数组:

array=(`cat $1`)

之后,要处理每个元素,您可以执行以下操作:

for i in ${array[@]} ; do echo "file = $i" ; done

答案 1 :(得分:2)

declare -a files
while IFS= read -r
do
    files+=("$REPLY") # Array append
done < "$1"
echo "${files[*]}" # Print entire array separated by spaces

cat is not needed

答案 2 :(得分:1)

#!/bin/bash

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

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