繁体   English   中英

bash和for循环中的关联数组

[英]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必需的?

演示: https//ideone.com/iQpjmj

谢谢

将您的扩展放在大括号周围。 没有它, $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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM