ここから文書を入手できますか?

ここから文書を入手できますか?

他のbashスクリプトの設定ファイルとして機能するbashスクリプトがあるとします。

構成.sh:

verbose=yes
echo "Malicious code!"
name=test

スクリプト.sh:

source config.sh
echo "After sourcing: verbose='$verbose', name='$name'"

問題は、config.shに入れたすべてのエントリが実行されるため、これは非常に安全ではないことです。

$ ./script.sh
Malicious code!
After sourcing: verbose='yes', name='test'

より安全にするために、割り当てタスクを整理し、そのタスクだけを実行する必要があると思いました。source「ここに文書」を渡してこれを行います。

スクリプト.sh:

source <<EOF
$(grep -P '^\s*\w+=' test.sh)
EOF
echo "After sourcing: verbose='$verbose', name='$name'"

(はい、正規表現はそれほど強力ではありません。私はプレースホルダーにすぎません。)残念ながら、ソースコードはここのドキュメントとうまく機能しないようです。

./script.sh: line 1: source: filename argument required
source: usage: source filename [arguments]
After sourcing: verbose='', name=''

明らかに、ファイルから構成データをインポートするためにできることはたくさんありますが、とにかくそれはより安全です。

しかし、私にはまだ恐れが残っていました。私がしたいことがうまくいくかどうかを知りたかったです。どんな提案がありますか?

ベストアンサー1

source <(cat << EOF
A=42
EOF
)
echo $A

出力:

42

おすすめ記事