一尘不染

扩展bash数组仅给出第一个元素

linux

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

#!/bin/bash

files=(*)

for file in $files
do
    echo $file
done

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

echo done

输出:

echo.sh
echo.sh read_output.sh
done

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


阅读 330

收藏
2020-06-02

共1个答案

一尘不染

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

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

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

for file in "${files[@]}"
2020-06-02