Fish Shell:
使用关联数组

如何操作:

Fish本身并不像Bash 4+那样原生支持关联数组,但您可以使用列表和字符串操作的组合来实现类似的功能。以下是模拟它们的方式:

首先,分别设置“关联数组”元素:

set food_color_apple "red"
set food_color_banana "yellow"

要访问一个元素,直接引用它即可:

echo $food_color_apple
# 输出:red

如果您需要遍历它们,使用for循环并考虑命名约定:

for food in apple banana
    echo $food_color_$food
end
# 输出:
# red
# yellow

对于那些缺少Bash的${!array[@]}来获取所有键的人,您可以在一个单独的列表中存储键:

set food_keys apple banana

for key in $food_keys
    echo $key '是' $food_color_$key
end
# 输出:
# apple 是 red
# banana 是 yellow

深入探讨

真正的关联数组,如其他脚本语言中的,尚未成为Fish方法的一部分。所展示的解决方法利用了Fish的字符串操作和列表功能来创建一个伪关联数组结构。虽然它有效,但并不如内置的关联数组支持那样干净或防错。其他shell,如Bash和Zsh,提供了内置的关联数组功能,这导致更直接、可读的代码。然而,Fish的设计理念旨在追求简洁性和用户友好性,可能以牺牲这类功能为代价。这种解决方法满足了大多数需求,但请关注Fish Shell的发展——其开发人员根据社区反馈积极改进和增加功能。