1

如果我运行 bash 脚本为

./myscript.sh zone=A build=release

有没有办法我可以根据参数而不是使用 $1、$2 来读取参数?

4

3 回答 3

0

希望这是您所要求的:

A="try"
try="something"
echo ${!A}
> something
于 2012-08-22T08:24:33.400 回答
0

不。Unix shell 是一项古老的技术,哈希映射在当时是众所周知的,但不是“流行的”。他们需要超过 1 个字节来实现,所以专业人士不想使用这种浪费的技术。

你还能做什么?通常的解决方案是getopt(1)

另一种方法是将所有选项写入文件和源:

echo "$@" | tr ' ' '\n' > options
. ./options

echo "zone=${zone}"
于 2012-08-22T08:27:51.653 回答
0

这接近你想要的。

set -k
./myscript.sh zone=A build=release

行为将与

zone=A build=release ./myscript.sh

也就是说,myscript.sh将在其环境中看到zonebuild使用给定的值。

于 2012-08-22T12:34:02.333 回答