私は、ini ファイル (スクリプトと一緒に開発してきたフォーマット) を取り、ファイルを読み込んで、指定されたアクションを実行する bash スクリプトを作成しました。
ini 形式の関数の 1 つを使用すると、シェル コマンドを渡して実行できますeval
。コマンドに変数名が含まれていると、問題が発生します。
eval
(または一般的なシェル)は値を正しく置換していないようで、ほとんどの場合、すべての変数名を空白に置き換えてコマンドを壊しているようです。文字列出力を作成するサブシェルにも同じ問題があるようです。
奇妙な点は、これが私の開発マシン (Linux Mint 13 を実行) で機能したことですが、CentOS 5.8 を実行しているターゲット マシンにスクリプトを移動すると、これらの問題が発生しました。
ini ファイルから読み取ったコードの例:
shellcmd $toolspath/program > /path/file
shellcmd parsedata=$( cat /path/file )
shellcmd
これらは、先頭を取り除き、次を使用して文字列を評価するスクリプト関数を通過します
eval ${scmd}
奇妙な動作を引き起こしている可能性のあるものと、問題を解決するために私ができることについてのアイデアはありますか? ここでの私の最終的な目標は、ファイルから行を読み取ってスクリプトを実行し、読み取りコマンドからスクリプト変数を正しく処理できるようにすることです。