gpt4 book ai didi

dictionary - fish shell ---如何模拟或实现哈希表,关联数组或键值存储

转载 作者:行者123 更新时间:2023-12-04 22:57:14 26 4
gpt4 key购买 nike

我正在从ksh迁移到fish。我发现我错过了定义关联数组,哈希表,字典或任何您想要调用的功能。某些情况可以模拟为

set dictionary$key $value
eval echo '$'dictionary$key

但是这种方法受到很大限制。例如,$key只能包含字母,数字和下划线。

我知道fish方法是在有外部命令时查找外部命令,但是我有点不愿意在文件系统中甚至在/run/user/<uid>中存储键值信息,因为这将我限制在“通用”范围内。
fish程序员如何解决缺少键值存储的问题?我只是缺少一些简单的方法吗?

这是我要解决的这类问题的示例:我想修改fish_prompt函数,以便某些目录不使用prompt_pwd打印,而是使用特殊缩写。我当然可以使用switch命令执行此操作,但是我宁愿拥有通用字典,因此我可以只查找目录并查看它是否具有缩写。然后,我可以使用set更改缩写,而不必编辑函数。

最佳答案

您可以将键存储在一个变量中,将值存储在另一个变量中,然后使用类似

if set -l index (contains -i -- foo $keys) # `set` won't modify $status, so this succeeds if `contains` succeeds
echo $values[$index]
end

检索相应的值。

其他可能性包括在一个变量中的键和值之间交替,尽管遍历这很麻烦,尤其是当您尝试仅使用内置函数来实现时。或者,您可以使用分隔符并将一个键值对存储为一个元素,尽管这对于目录不起作用,因为变量不能包含\0(这是路径的唯一可能的分隔符)。

关于dictionary - fish shell ---如何模拟或实现哈希表,关联数组或键值存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40009243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com