这个参数扩展有什么作用?

这个参数扩展有什么作用?

下面具体是做什么的?

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"

注意:在第二个示例中,最后一行是空的,因此MY_VAR是一个空字符串。


根据要求,另一种方法可以是:

tail -n1 <<< "$MY_INPUT"

或者:

echo "$MY_INPUT" | tail -n1

相关内容