Bashスクリプトで引用符で囲まれたパラメータ値を取得するには?

Bashスクリプトで引用符で囲まれたパラメータ値を取得するには?

私は次のコマンドを使用しています:

curl -I "http://localhost:8080/jobname/buildWithParameters?ENVIRONMENT=UPPER_DEV&IP=$HOSTNAME"

私はそれの一部を提供します:

echo '"$HOSTNAME"'

引用符内に出力が期待されます"abcxyz.dev.int"

しかし、私はこの結果を得ます。

"$HOSTNAME"

私のホスト名の値を取得できませんでした。この問題を解決するのに役立ちます。

答え1

一重引用符は、変数が拡張されないことを意味します。

$ echo '$HOSTNAME'
$HOSTNAME

引用した変数を印刷する必要がある場合は簡単です(とにかく全体的に良くなった)使用printf

$ printf '"%s"\n' "$HOSTNAME"
"myHost"

もしあなたなら〜しなければならないを使用するには、echo次のようにします。

$ echo "\"$HOSTNAME\""
"myHost"

またはこれ:

$ echo '"'"$HOSTNAME"'"'
"myHost"

これがあなたが表示したコマンドとどのような関係があるのか​​理解できません。ただし、コマンドで引用しcurlたい場合は、次のようにURL全体を引用するだけで十分です。$HOSTNAMEcurl

curl -I "http://localhost:8080/jobname/buildWithParameters?ENVIRONMENT=UPPER_DEV&IP=$HOSTNAME"

または、サーバーに引用符が必要な場合は、次のようにします。

curl -I "http://localhost:8080/jobname/buildWithParameters?ENVIRONMENT=UPPER_DEV&IP='$HOSTNAME'"

しかし、本当に二重引用符が必要な場合は、次のことを試してください。

curl -I "http://localhost:8080/jobname/buildWithParameters?ENVIRONMENT=UPPER_DEV&IP=\"$HOSTNAME\""

関連情報