3

現在いるディレクトリのさまざまな状態に作用する bash プロンプト プロジェクトに取り組んでいます。

私が今必要としているのは、現在のディレクトリからミニ構成をロードする方法です。これは で簡単に実行できます. .params.conf。ただし、この方法は非常に安全ではありません。現在のディレクトリへの書き込みアクセス権を持つ人なら誰でもコマンドを作成して実行できるためです。 .params.conf ファイルが含まれるディレクトリに出くわします。

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

可能な解決策:

  • 事前定義された各変数をロードするループは可能ですが、コードを読みやすい方法で保持したいと考えています。

  • ファイル全体を bash 配列に入れるのが最善の解決策ですが、このように bash にキー/値の辞書を入力するにはどうすればよいですか?

  • bashが変数をロードするだけでファイルをソースできる場合..

params.conf ファイルの形式がどのようになるかはまだわかりません。しかし、最も簡単なのは、スペースで区切られたパラメーターごとに1行になると思います。各行に次のように: key value that can have space in it.

4

2 に答える 2

3

eval非常に安全ではない可能性があり、依然として悪意のあるコードを実行する可能性があります。使用する方が良いですdeclare

while read varname value
do
    declare "$varname=$value"
done < .params.conf
于 2012-05-13T13:17:31.823 に答える
0

値に引用符が含まれていない場合は、かなり簡単です。

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

変数内に引用符がある場合は、より注意してエスケープを追加する必要があります。

于 2012-05-13T13:06:25.203 に答える