[英]Associative array in bash and for loop
我在bash中给出了我的第一步,并希望创建一个关联数组并迭代它。 我的直觉是这样做:
declare -A FILES=(['SOURCE']='Source/Core/Core.js' ['DIST']='dist/Core.js')
for file in "${!FILES[@]}"; do
echo $file - $FILES[$file]
done
但输出是:
SOURCE - [SOURCE]
DIST - [DIST]
没有预期的路径。 我错过了什么? 和顺便说一句,是declare -A
必需的?
谢谢
将您的扩展放在大括号周围。 没有它, $FILES
和$file
将分开扩展。
${FILES[$file]}
一个好的做法是将它们放在双引号周围以防止分词和可能的路径名扩展:
echo "$file - ${FILES[$file]}"
测试:
$ declare -A FILES=(['SOURCE']='Source/Core/Core.js' ['DIST']='dist/Core.js')
$ for file in "${!FILES[@]}"; do echo "$file - ${FILES[$file]}"; done
SOURCE - Source/Core/Core.js
DIST - dist/Core.js
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.