パターンの用途を説明してください。
arg="${arg//\\/\\\\}"
正確に一致するという意味ですか?
ベストアンサー1
${var//pattern/replacement}
ksh93シェルのパラメータ拡張演算子。
$var
一致するすべての文字列pattern
が置き換えられる値に展開されますreplacement
。
この演算子は、zsh、bash、mksh を含む複数のシェルからコピーされました。それ以外の場合は、標準のshパラメータ拡張演算子ではありません。
?
このパターンは、単一文字の一致、*
文字シーケンスの一致、文字の一致、または任意の[abc]
文字の一致(さまざまなシェルにはこれらの文字への追加の拡張が含まれている)などのシェルのグローバルパターンです。a
b
c
'*'
特殊グローバル文字が\*
、、¹のように引用されると文字通り"*"
解釈されます。${var//\?/replacement}
たとえば、すべての文字の代わりに疑問符を置き換えます。
\\
バックスラッシュはそれ自体を示すように'\'
引用されなければならず"\\"
、したがって、すべてのバックスラッシュが2つのバックスラッシュに置き換えられる値に拡張されるべきです${var//\\/\\\\}
。$var
1全体が二重引用符内にある場合でも、\
他の引用演算子の代わりに使用する方が良いことがよくあります。${...}
パターンおよび/または置換が拡張から派生し、その拡張が参照されない場合(例${var//$pattern/$replacement}
:${var//"$pattern"/"$replacement"}