2012-05-13 3 views
3

変数信頼されていない構成をロードする。私はあなたが現在いるディレクトリに異なる状態に作用bashのプロンプトのプロジェクトに取り組んでいます

を私は今、必要なのは、現在のディレクトリからミニコンフィギュレーションをロードするための方法ですが、これはこの方法は非常に安全ではないことを除いて、. .params.confで簡単に行えます。あなたが入っているディレクトリへの書き込みアクセス権を持つ人は、.params.confファイルを持つディレクトリを遭遇したときにコマンドを作成して実行できます。

このようなファイルから変数をロードする最も良い方法は何ですか? 変数はほとんどが真偽状態になるので、私はそれらを実行することができるように何らかの方法で解析していません。

考えられる解決策:

  • ループは、それぞれ事前に定義された変数をロードすることは可能ですが、私は読みやすい形式でコードを保存しておきたいです。

  • ファイル全体をbash配列に入れるのが最適な解決策ですが、どのようにしてこのようにbashのキー/値辞書を設定できますか?

  • bashが変数のみをロードするファイルを供給することができた場合...

私はparams.confファイルのフォーマットはまだのようになります方法を知ってはいけません。しかし、最も簡単なのは、スペースで区切られた各パラメータの1行になると思います。各行のこのように:key value that can have space in it

答えて

3

evalvery insecureであり、悪意のあるコードを実行する可能性があります。 declareを使用する方が良いです。

while read varname value 
do 
    declare "$varname=$value" 
done < .params.conf 
0

あなたの値は引用符が含まれていない場合、それはかなり簡単です:

while read varname value ; do 
    eval $varname="'$value'" 
done < .params.conf 

変数の内側に引用符がある場合、あなたはより慎重になるといくつかのエスケープを追加する必要があります。

関連する問題