【发布时间】:2023-04-03 15:58:01
【问题描述】:
我希望能够做到:
Script1.sh
declare -A map=(
['A']=1
['B']=2
['C']=3
['D']=4
)
sh script2.sh ???
Script2.sh
params = ...
echo ${params['A']}
即,通过按键访问参数。我已经看到了普通数组的相关问题,他们的答案是将数组传递为:
sh script2.sh "${AR[@]}"
我认为可以翻译成:
sh script2.sh "${map[0]}" "${map[1]}" "${map[2]}"
但是这样,我只能根据它们的顺序访问元素。
是否有一个聪明的技巧来实现我想要的?也许是通过"A=1" "B=2" "C=3" "D=4" 而让script2.sh 解析它们?还是有更简洁的解决方案?
【问题讨论】:
-
你以前查过类似的问题吗 - 一个简单的搜索提供了我 1.How to pass an associative array as argument to a function in Bash? 2.Passing associative array as argument with Bash
-
请注意
sh没有数组。 -
params = ...是无效语法或sh和bash。您是否在shellcheck.net 检查过您的代码?您是否有理由不在每个脚本的顶部使用“shebang”行来控制 shell 解释您的代码(即#!/bin/bash),而不是您当前的代码bash script2?如果读者编辑您的 Q,那么就有可能做出无助于定义您的问题的更改。明确定义你的问题是你的责任,对吧?祝你好运。 -
我们随时为您提供帮助,但明确定义您的问题是您的责任。要有耐心并学习使用该网站的最佳方式(请参阅this guide 了解更多信息),但如果您是寻求帮助的人,则不能指望其他人负责猜测您想要什么。坚持下去。尽自己的一份力量,您将拥有数千年的用户经验来指导您。粗心和/或防御只会让他们转向一个更有趣的问题来解决。请记住,我们不会为此获得报酬。帮助我们帮助您。
-
它有淡淡的XY Problem的味道。