linux – Bash for循环数组,文件来自(*)只显示第一个元素

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

#!/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循环中打印?

解决方法

$files扩展到数组的第一个元素.

尝试echo $files,它只会打印数组的第一个元素.

由于同样的原因,for循环只打印一个元素.

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

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

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

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。