
次は正確に何をしますか?
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