我在 bash 脚本中有一个循环,用于处理文件夹中的多个文件。在我的循环中,对于每个文件,我执行以下行:
awk -F":" '{ print "Name: " $1 "\t\tID:" $3 }' $file
我想收集一些 bash 变量/数组中处理的所有文件的输出,以供循环外的其他处理。我怎样才能在 bash 中实现这一目标?
答案1
这可以使用 shell 脚本数组轻松完成:
i=0
for file in file1 file2 ....; do
output[$i]=$(awk -F":" '{ print "Name: " $1 "\t\tID:" $3 }' "${file}")
i=$((${i}+1))
done
答案2
与 a0f3dd13 类似,您可以使用联想性的数组。它们在这里可能很有用,尤其是在检索数据时。
关联数组可以使用字符串而不是整数作为索引(它们基本上是哈希映射),因此您可以更轻松地检索数据。
declare -A output
for file in file1 file2 ....;do
output["$file"]=$(awk -F":" '{ print "Name: " $1 "\t\tID:" $3 }' "${file}")
done
然后要检索数据,您可以使用:
echo "${output[file1]}"
这将输出你得到的结果file1