Echo $ {ホスト名}; echo $(ホスト名);

Echo $ {ホスト名}; echo $(ホスト名);

次の違いを説明してもらえますか?

echo ${hostname}; そしてecho $(hostname);

echo ${hostname};- 何も表示せず、空行のみが表示されます。 echo $(hostname);- /etc/hostnameの情報を表示します。

Ubuntu 22.04.1とCentOS 7でテストされました。

ベストアンサー1

${hostname}または$hostnameとして知られているパラメータ拡張、シェル変数の値がここに提供されますhostname。設定されていない可能性があるため、空の文字列が取得され、拡張子が引用されていないため、トークン化中に削除されます。しかし、もちろんこれを定義することができ、Bashは自動的にHOSTNAMEホスト名で大文字を入力します。

たとえば、参照してください。$VAR対${VAR}と引用

$ hostname=foo
$ echo "$hostname"
foo

$(hostname)~と呼ばれるコマンドの置き換え、ここではコマンドを実行しhostnameて出力を提供します。

$ hostname
ulpukka
$ foo=$(hostname)
$ echo "$foo"
ulpukka

単語の区切りは、引用符のないパラメータの拡張とコマンドの置換に機能します。Bashで$(コマンドを置き換える)内で引用そしていつ二重引用符が必要ですか?

おすすめ記事