如果我运行 bash 脚本为
./myscript.sh zone=A build=release
有没有办法我可以根据参数而不是使用 $1、$2 来读取参数?
希望这是您所要求的:
A="try"
try="something"
echo ${!A}
> something
不。Unix shell 是一项古老的技术,哈希映射在当时是众所周知的,但不是“流行的”。他们需要超过 1 个字节来实现,所以专业人士不想使用这种浪费的技术。
你还能做什么?通常的解决方案是getopt(1)。
另一种方法是将所有选项写入文件和源:
echo "$@" | tr ' ' '\n' > options
. ./options
echo "zone=${zone}"
这接近你想要的。
set -k
./myscript.sh zone=A build=release
行为将与
zone=A build=release ./myscript.sh
也就是说,myscript.sh
将在其环境中看到zone
并build
使用给定的值。