Bash> 4.0では、変数拡張が小文字の変数に使用されることを確認しました。例えば
echo ${variable,,}
読書マニュアルページシェルが文字列を小文字に変換する理由を本当に理解していません。
シーケンス式は {x..y[..incr]} 形式を取ります。ここで、xとyは整数または単一文字で、incr(オプションの増分)は整数です。整数が指定されると、式はxとyの間のすべての数字を含む拡張されます。指定された整数の前に「0」を付けて、各項目の幅を同じにすることができます。 xまたはyが0で始まる場合、シェルは生成されたすべての用語が同じ桁数を含むように強制し、必要に応じて0を埋めます。文字が指定されると、式はデフォルトのCロケールを使用してxとy(含む)の間のすべての文字にアルファベット順に展開されます。 xとyは同じ型でなければなりません。デルタを提供する場合は、各項目の差として使用されます。デフォルトの増分は適切に1または-1です。
変数が小文字に変換されるのはなぜですか?
答え1
あなたは文書の間違った部分を読んでいます。シェルパラメータ拡張代わりに。
${parameter^pattern}
${parameter^^pattern}
${parameter,pattern}
${parameter,,pattern}
この拡張は、中間アルファベット文字の大文字と小文字を変更します
parameter
。pattern
ファイル名拡張と同様に、パターンを生成するために拡張されます。拡張値の各文字はparameter
に対してテストされpattern
、パターンと一致すると大文字と小文字が変換されます。パターンは複数の文字と一致しようとしないでください。 '^'演算子は一致する小文字を大文字に変換し、 ','演算子は一致する大文字を小文字に変換します。 '^^' および ',,' 拡張は、拡張値から一致するすべての文字を変換します。 '^' および ',' 拡張は一致し、拡張値の最初の文字のみを変換します。省略すると、pattern
「?」として扱われ、すべての文字と一致します。 '@'または '*'の場合、parameter
各場所パラメータに大文字と小文字の変更操作が順番に適用され、結果のリストに展開されます。下付き文字「@」または「*」を含む配列変数の場合、大文字と小文字のparameter
変更操作は配列の各メンバーに順番に適用され、結果リストに展開されます。
答え2
「中括弧拡張」で始まらない「中括弧拡張」セクションを引用しています$
。
次のコマンドを実行する必要があります。
LESS=+/'\{parameter\^pattern\}' man bash
$
()で始まる「大文字と小文字の変更」セクションを見つけます${ ^^ }
。