という形式の変数から値を取得するシェルスクリプト(#!/ bin/sh)を使用している私が初めて、チュートリアルなどを読んで作業していますしかし、イムは、私はパラメータに渡すために、ユーザをしたいと思いフォームbashスクリプトがvar {id}
key1_begin=abc
key1_end=def
key2_begin=123
key2_end=jkl
.. and so on
の設定ファイルからキー=値のペアを読み込むしようとしている
..キーのこの読み込みと書き込みの値にイム立ち往生スクリプトのようにsomething.sh 1 x y z
最初のパラメータは、適切なキーを変更するために使用されるパラメータとして機能します。私は、ディレクトリが存在することを確認していると、ファイルは私がその後、ID = $ 1を使用してIDを保存し、取得するので、読み取り
echo key${ID}_begin
を使用してキーにアクセス
source config.cfg
使用して、それをソースが存在するので、後キーの値は、私が「key1_begin = ABC」を取得する代わりに、「key1_begin = 0」得続けることを期待し
echo key${ID}_begin = $[key${ID}_begin]
だろう。しかし、同じコマンドは数字の仕事をするようです。たとえば、IDが2のこのコマンドを使用すると、「key2_begin = 123」というメッセージが表示されます。
数字が正しいのにアルファベットは正しく表示されません。
変数の値を変更するにはどうすればよいですか?
[ ! -z $2 ] && eval key${ID}_end=$3
本当にこれで何かアドバイス/ポインタをお願い申し上げます。\
は、あなたが最も可能性が高い必要があるとして
あなたが(むしろPOSIX shのために書くよりも)はbash-構文のみを使用することができるようにしたい場合'#!/ bin/sh'ではなく'#!/ bin/bash'でスクリプトを起動するべきです。 '/ bin/sh'が'/bin/bash'へのシンボリックリンクであっても、 '/ bin/sh'として呼び出されたときの非POSIX拡張の数。 –