環境変数に保存されたコマンドの評価

環境変数に保存されたコマンドの評価

変更が制限されているか修正できないbashスクリプトは、次の環境変数を使用します。

"${SERVER_ADDRESS}"

実際のSERVER_ADDRESS値は実行時にのみ動的に決定できるため、IPを検索するcurlコマンドにSERVER_ADDRESSを設定しようとしています。それは次のとおりです。

SERVER_ADDRESS='curl -s http://lookup.api.com'

これをより複雑にするには、実際のルックアップが必要なアドレスの一部だけを返すので、実際に必要なのは一種の接続です。

SERVER_ADDRESS='$(curl -s http://lookup.api.com).restofaddress.com'

これは、文字列が環境変数に割り当てられると、curlコマンドが実行され評価されますが、実行中にスクリプト内で評価を実行する必要があることを意味します。

「${SERVER_ADDRESS}」のみを含むスクリプトが正しい値で終わるように、環境変数のテキスト形式を指定するために可能なすべてを試しましたが、パニックになりました。おそらく、受信スクリプトに複雑さを加えなければ不可能かもしれません。

ベストアンサー1

一重引用符の代わりに二重引用符を使用してください。

SERVER_ADDRESS="$(curl -s http://lookup.api.com).restofaddress.com"

補間および拡張(たとえば、ここでは変数拡張またはコマンド拡張)は、二重引用符で囲まれた文字列内で実行されますが、単一引用符で囲まれた文字列内では実行されません。

おすすめ記事