line=${line//[$'\r\n']}
。しかし、[$'\r\n']
意味ですか?
'\r\n'
文字ですが、これはどのように行われますか?両方の文字のインスタンスのみを削除しますか、それとも1つの文字のみの一致も検出しますか?
この構文の使い方がわかりません。
できればマニュアルへのリンクをください。この質問に対する答えは見つかりません。
ザ・バッシュのマニュアル から:
$ {parameter/pattern/string}
patternは、ファイル名の展開と同じように展開されてパターンを生成します。 Parameterが展開され、その値に対するpatternの最長一致が文字列に置き換えられます。照合は、以下に説明する規則に従って実行されます( パターン照合 を参照)。 patternが/
で始まる場合、patternの一致はすべてstring。 ...stringがnullの場合、patternの一致が削除され、/
に続くパターンが省略される場合があります。
${line//[$'\r\n']}
があります。
line
、/[$'\r\n']
です(注:/
で始まるため、パターンのすべての一致が置き換えられます)。/
は省略され、一致は削除されます。パターンマッチング のルールに従う:
[…]
囲まれた文字のいずれかと一致します。
$'...'
は、特定のエスケープシーケンス(ここでは、キャリッジリターンの場合は\r
、ラインフィードの場合は\n
)を解釈して、エスケープで表される実際の文字に置き換えるようにbashに指示しますシーケンス。
したがって、この置換は、キャリッジリターン(CR、\r
)またはラインフィード(LF、\n
)のすべてのインスタンスに一致し、それらを削除します。