POSIX shはどのタイプの文字列補間をサポートしますか?

POSIX shはどのタイプの文字列補間をサポートしますか?

POSIX shで許可されていますか"${blah}"、またはbash派生シェルが必要ですか?

ベストアンサー1

"${blah}"移植可能なシェル構文です"$blah"。これは、既存の Bourne シェルだけでなく、すべての POSIX 準拠シェルにも適用されます。 POSIXには、変数を拡張するための追加機能も必要です。

  • ${VAR#PREFIX}${VAR##PREFIX}、およびを使用して${VAR%SUFFIX}文字列操作を実行します${VAR%%SUFFIX}
  • 未設定の変数を処理するには、および条件文を使用し、および設定されていないか空の${VAR-DEFAULT}バリアントを使用します。${VAR=DEFAULT}${VAR+FALLBACK}${VAR?MESSAGE}:-:=:+:?
  • 可変長${#VAR}

すべての場合に二重引用符を使用しない限り(または複数の単語を許可しない他のコンテキスト)結果は、$…スペース分割(より正確には文字分割)とワイルドカード拡張(ワイルドカード拡張)を経ます。$IFS

仕様を読むと、POSIXに何が存在するかを確認できます。最新バージョンのPOSIXオープングループ基本仕様(オプションのコンポーネントなし)。以前のバージョンは次のサブセットです。シングルUnix v2

今日、POSIXシェルのないUnixシリーズシステムは非常にまれです。/bin/sh一部のシステム、特にSolarisではPOSIX Bourneシェルではありませんが、POSIXシェルを使用できます(/usr/xpg4/bin/shSolarisでは/usr/xpg4/binPATHでこれを進める必要があります)。/usr/binBourneシェルとの互換性が必要な場合は、多少異なる機能セットを持つ多くのバージョンのshがあるので、興味のあるシステムのマニュアルページを確認してください。Sven Mascheckは、多くの情報を含むページを管理します。

おすすめ記事