1

bashスクリプトを次のように実行すると

./myscript.sh zone=A build=release

$1、$2 を使用する代わりに、パラメーターに基づいて引数を読み取ることができる方法はありますか?

4

3 に答える 3

0

これはあなたが望むものに近いです。

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

と同じように動作します

zone=A build=release ./myscript.sh

つまり、その環境で指定された値をmyscript.sh表示zoneします。build

于 2012-08-22T12:34:02.333 に答える
0

これがあなたが求めているものであることを願っています:

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

いいえ。Unix シェルは古い技術です。当時はハッシュ マップが知られていましたが、「流行り」ではありませんでした。実装には 1 バイト以上が必要だったので、専門家はそのような無駄な技術を使用したくありませんでした。

他に何ができますか?通常の解決策はgetopt(1)です。

別の方法は、すべてのオプションをファイルとソースに書き込むことです。

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

echo "zone=${zone}"
于 2012-08-22T08:27:51.653 に答える