【发布时间】:2021-10-08 00:02:52
【问题描述】:
我正在使用 bash for 循环来循环浏览目录并打印文件大小。我的问题是我需要为每个值分配一个唯一变量,以便以后可以使用它们,但是数组将所有数据作为数组中的一个元素输入。我已经尝试了双 for 循环和带有嵌套 for 循环的 if 语句,但没有得到正确的结果。 问题:如何修复以下代码以满足我的需求或有更好的方法?
declare -a byte
for b in /home/usr/frames/*
do
byte+=$(wc -c < $b)
done
declare -p byte
【问题讨论】:
-
尝试使用关联数组,例如
declare -A byte["$b"]=$(wc -c < "$b")而不是普通的数组索引数组。 -
@Jetchisel 这不是我想象的那样,但它确实有效,所以谢谢。如果您知道获取数组名称的方法,例如 f1、f2 等,请再次发布。声明 -A byte=([/home/joe/STENO/REAL/frames/frames7.png]="12853871" [/home/joe/STENO/REAL/frames/frames5.png]="12691609" [/home/乔/STENO/REAL/frames/frames8.png]="12869799" [/home/joe/STENO/REAL/frames/frames3.png]="12678175" [/home/joe/STENO/REAL/frames/frames1. png]="12618804" [/home/joe/STENO/REAL/frames/frames2.png]="12653975" [/home/joe/STENO/REAL/frames/frames6.png]="12698386" [/home/乔/STENO/REAL/frames/frames4.png]="12828883" )
-
我已经编辑了答案,从路径名中提取文件名,不确定数组名,因为字节是关联数组的名称,
array_name[key]=value