gpt4 book ai didi

linux - shell脚本将数组的值赋给变量

转载 作者:太空宇宙 更新时间:2023-11-04 10:07:15 24 4
gpt4 key购买 nike

我想将文件数组中的值赋值给变量$filename0,$filename1...etc

如何设置自动递增文件名并分配正确的值结果应该是这样的$filename0=文件数组[0]$filename1=文件数组[1]

现在,这是我的代码

filearray=('tmp1.txt' 'tmp2.txt' 'tmp3.txt' 'tmp4.txt' 'tmp5.txt')
let i=0
while (( i <= 4 ));
do
filename=${filearray[i]}
i=$(( i+1 ))
done

抱歉更新晚了:
现在,当文件名中有扩展名时,它会提示
“语法错误:无效的算术运算符(错误标记为“.txt”)”
但是当我回显 $(filename1)

时没问题
count=0
for i in ${filearray[@]};
do
count=$(( count +1 ))
declare filename$count=$i
done
y=0
while [ $y < $count ]
do
y=$(( y + 1 ))
echo $((filename$y))
done

最佳答案

您似乎想动态创建变量名。虽然这是可能的*但几乎总是有更好的方法来做到这一点,例如使用关联数组:

filearray=('tmp1.txt' 'tmp2.txt' 'tmp3.txt' 'tmp4.txt' 'tmp5.txt')

declare -A fileassoc

for ((i=0; i < ${#filearray[@]}; i++))
do
fileassoc["filename$i"]=${filearray[i]}
done

# To illustrate:
for key in "${!fileassoc[@]}"
do
echo "$key: ${fileassoc[$key]}"
done

# or
for ((i=0; i < ${#filearray[@]}; i++))
do
key="filename$i"
echo "$key: ${fileassoc[$key]}"
done

给予:

filename4: tmp5.txt
filename1: tmp2.txt
filename0: tmp1.txt
filename3: tmp4.txt
filename2: tmp3.txt

(关联数组不是有序的,它们不必是)

*使用名为 eval 的危险命令 - 那里有龙,即使有魔法戒指也不要去那里

关于linux - shell脚本将数组的值赋给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51492737/

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