gpt4 book ai didi

arrays - 将 ls 输出转换为数组

转载 作者:行者123 更新时间:2023-12-05 09:19:13 24 4
gpt4 key购买 nike

我想将 ls 的输出放入一个数组中,这样我就可以遍历它并最终使用用户指定的条目。

我做的是下面的

SETUPS="$(ls)"
IFS=$' ' read -rd '' setup <<<"$SETUPS"

当我运行 echo $setup[0] 时它会显示所有存在的文件
虽然我应该能够运行 echo $setup[0]并且只获取第一个条目。

谁能告诉我这里做错了什么?

我已经试过了 SETUPS="$(ls -1)"IFS=$'\n' read -rd '' setup <<<"$SETUPS" 分隔它但这也不起作用。

现在我正在这样循环

n=0
for i in `echo ${setup} | tr "," " "`
do
n=$((n+1))
echo $n". $i"
done

它可以回显每个条目前面都有一个数字,但我不可能从那里选择一个条目,因为每个值似乎都存储为 1 个值

最佳答案

如果你想在一个数组中获取这个目录中的所有文件,你可以使用通配符:

files=(*)
printf '%s\n' "${files[@]}"

会将 glob 匹配的所有文件存储在数组 files 中,然后你可以根据需要使用 printf 打印它们,或者做任何你想做的事情遍历数组。

n=0
for current in "${files[@]}"; do
n=((n+1))
printf '%s %s\n' "$n" "$current"
done

如果您出于其他目的不需要它,您甚至不需要将它存储在中间的数组中:

for current in *; do

工作正常

关于arrays - 将 ls 输出转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41487303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com