我想将文件数组中的值分配给变量$ filename0,$ filename1 ... etc
如何设置自动增加文件名并分配正确的值 结果应该是这样的 $ filename0 =文件数组[0] $ filename1 = filearray [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
答案 0 :(得分:1)
似乎您想动态创建变量名。尽管这是可能的*,但几乎总是有一种更好的方法,例如,使用关联数组:
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
的危险命令-即使有魔环,也有龙,不要去那里