1

先日、SOに関する質問に出くわしました。HOSTNAMEを含む/etc/ sysconfig/networkの値を抽出したい場合

NETWORKING=yes
HOSTNAME=foo

これで、grepとcutを実行して取得できますfooが、同様の問題にいくつかのbashマジックが含まれていました。何を検索すればいいのかわからないので、今は質問が見つからないようです。のようなものが含まれていました#{HOSTNAME}。まるでそれがHOSTNAMEfooとしてそして価値として扱われているかのように。

4

1 に答える 1

2

その構成ファイルがシェル構文と互換性がある場合は、単純にシェル スクリプトとして含めます。/etc/sysconfigRed Hat ライクなディストリビューションの IIRC ファイルは、シェルで解析できるように設計されています。これは次のことを意味することに注意してください。

  • シェルの特殊文字が変数の値になる可能性がある場合は、適切に引用符で囲む必要があります。たとえばvar="value with spaces"、引用符が必要です。var="with\$dollar"バックスラッシュが必要です。
  • スクリプトは実行される任意のコードを実行する可能性があるため、その内容を信頼できる場合にのみ問題ありません。

これらの仮定が有効である場合、次の単純なルートに進むことができます。

. /etc/sysconfig/network
echo "$HOSTNAME"

引用符と中括弧については、$VAR vs ${VAR} および to quote or not to quote を参照してください。

于 2012-09-07T10:16:09.927 に答える