在 python 中,我可以用一行完成此操作:
>>> for key, value in dict(j=1, k=2).items():
... print(key, value)
...
j 1
k 2
>>>
在 bash 中,我可以这样做:
$ map=([j]=1 [k]=2); for key in ${!map[@]}; do value=${map[$key]}; echo $key $value; done
j 1
k 2
$
bash 中有没有一种方法可以将
map
声明“内联”到 for
中 - 类似在 python 示例中如何实现 - 而不是预先声明它?
我寻找这个的原因是为了避免必须分别声明两个额外的变量
map
和 value
- 换句话说,在命令行上执行单行代码时,如果可能的话,使其更短。
bash 中是否有一种方法可以将映射声明“内联”到 for 中 - 类似在 python 示例中如何实现 - 而不是预先声明它?
没有。
你可以逐行阅读两个单词,但没有地图。
printf "%s\n" j 1 k 2 | while read -r key value; do echo "$key" "$value"; done
使用 shellcheck 检查您的脚本。