このパラメータ拡張は何をしますか?

このパラメータ拡張は何をしますか?

次は正確に何をしますか?

MY_VAR=${MY_INPUT##*$'\n'}

ベストアンサー1

*\n保存した文字列の先頭から最も長い部分文字列を削除しますMY_INPUT。ワイルドカードがあるため、*結果としてMY_INPUT最後の行を除くすべての行が削除され、最後の行がに保存されますMY_VAR。 before$は、文字通り文字の合計ではなく改行文字として評価して処理するためにそこに配置されます。'\n'\n\n

いくつかの例:

MY_INPUT            MY_VAR
"a\nb\nc"        -> "c"
"a\n"            -> ""
"abcde\n\n\ndef" -> "def"

注:2番目の例では、最後の行は空であるため空のMY_VAR文字列です。


要件に応じて、他のアプローチは次のとおりです。

tail -n1 <<< "$MY_INPUT"

または:

echo "$MY_INPUT" | tail -n1

おすすめ記事