このパラメータの置き換えを見ましたが、正確に何をするのか混乱しています。
${num//[0-9]/}
ベストアンサー1
文字列に表示される位置に関係なく、文字列からすべての数字(0〜9)を削除(*)します。例えば
$ num=abc5x7y999z
$ echo ${num//[0-9]/}
abcxyz
/
(*)事実上、空の文字列またはそのパラメータ拡張の最後の文字列の後の文字列に置き換えられます。からman bash
:
${parameter/pattern/string}
パターン交換。パターンはパターンを生成するために拡張され、パス名拡張と同様にパラメータが拡張され、パターンとその値と最も長い間一致する項目が文字列に置き換えられます。マッチングは、以下のパターンマッチングで説明されている規則を使用して行われます。
パターンがで始まると、
/
そのパターン内のすべての項目が文字列に置き換えられます。 通常、最初の発生のみが置き換えられます。パターンがで始まる場合は、
#
パラメータ拡張値の先頭で一致する必要があります。パターンがで始まる場合は、引数%
の拡張値の終わりと一致する必要があります。文字列が空の場合、一致するパターンは削除され、後続のパターンは省略される可能性
/
があります。nocasematchシェルオプションを有効にすると、アルファベット文字の大文字と小文字に関係なく一致が行われます。引数が
@
or の場合、*
各位置引数に代替操作が順番に適用され、拡張が結果リストになります。
@
パラメーターがまたはで索引付けされた配列変数の場合、配列*
の各メンバーに対して代替操作が順番に実行され、拡張は結果のリストです。
(太字で表示して改行を追加しました)