bashスクリプトを次のように実行すると
./myscript.sh zone=A build=release
$1、$2 を使用する代わりに、パラメーターに基づいて引数を読み取ることができる方法はありますか?
これはあなたが望むものに近いです。
set -k
./myscript.sh zone=A build=release
と同じように動作します
zone=A build=release ./myscript.sh
つまり、その環境で指定された値をmyscript.sh
表示zone
します。build
これがあなたが求めているものであることを願っています:
A="try"
try="something"
echo ${!A}
> something
いいえ。Unix シェルは古い技術です。当時はハッシュ マップが知られていましたが、「流行り」ではありませんでした。実装には 1 バイト以上が必要だったので、専門家はそのような無駄な技術を使用したくありませんでした。
他に何ができますか?通常の解決策はgetopt(1)です。
別の方法は、すべてのオプションをファイルとソースに書き込むことです。
echo "$@" | tr ' ' '\n' > options
. ./options
echo "zone=${zone}"