使用来自(*)的文件的Bash for循环数组仅显示第一个元素

时间:2017-11-18 15:53:19

标签: linux bash for-loop scripting

我想将当前目录的文件放在一个数组中,并用这个脚本回显每个文件:

#!/bin/bash

files=(*)

for file in $files
do
    echo $file
done

# This demonstrates that the array in fact has the values from (*)
echo ${files[0]}  ${files[1]} 

echo done

输出:

echo.sh
echo.sh read_output.sh
done

有谁知道为什么只有第一个元素在for循环中打印?

1 个答案:

答案 0 :(得分:14)

$files扩展为数组的第一个元素。 试试echo $files,它只会打印数组的第一个元素。 由于同样的原因,for循环只打印一个元素。

要扩展到数组的所有元素,您需要将其写为${files[@]}

迭代Bash数组元素的正确方法:

for file in "${files[@]}"