このサイトの多くの回答やコメントには、eval
一般的にシェルスクリプトでの使用を避ける必要があると言われています。これらのレビューは通常初心者のためのものです。
上記のセキュリティ問題と堅牢性を見たことがありますが、例はほとんどありません。
私はすでに知っていますeval
コマンドは何ですか?はいそしてそれを使う方法。しかし、そこに提供された答えではeval
。すべて回答によると、これはeval
主なセキュリティの脆弱性である可能性がありますが、ほとんどは説明せず、結論としてこの事実に言及しています。これはより深く考える価値があるように見え、実際にそれ自体の質問でもあります。
なぜはいeval
悪い考えを使っていますか?
いつ会議使用するのが適切ですか?
完全に安全に使用するためのガイドラインはありますか、常に必然的にセキュリティホールがありますか?
編集する:この記事この質問を投稿したときに実際に探していた標準参照(回答)です。どんな虐待者でもeval
この言及を指摘することができます。
ベストアンサー1
この質問は意見を呼び起こすでしょう...
eval
標準シェルの一部です。
ユーティリティーは、
eval
それぞれ区切り文字で区切られた引数を一緒に連結してコマンドを構成する必要があります。<space>
特徴。生成されたコマンドはシェルから読み取って実行する必要があります。
嫌いな理由eval
:
- スクリプト作成者が正しく引用できず、予期しない動作が発生する可能性があります(評価中の変数で参照が一致しない可能性を考慮してください)。
- 評価結果は明確ではないかもしれません(部分的には参照の問題のため、部分的には
eval
他の変数の名前に基づいて変数を設定できるため)。
一方、eval
入力したデータを調べる場合(たとえば、ファイル名の結果をテストし、複雑な引用符がないことを確認する場合など)は便利なツールです。提案された代替案は移植性が低下することが多く、例えば一部の特定のシェル実装に限定される。
追加の読書(ただし、bashは実装固有/標準以外の選択肢を提供することに注意してください):