有什么办法吗
CPU=$(uname -r); echo ${CPU##*-}
没有在 BASH 中声明字符串或函数?
echo ${$(uname -r)##*-} #<<< I'm looking for this form
但它不起作用,并且
[[ $(uname -r) =~ .+-(.+) ]] && echo "${BASH_REMATCH[1]}"
不是动态的(我希望它嵌套),并且
un-r(){ uname -r;};cpu=$(un-r);echo ${cpu##*-}
不是匿名的(或动态的)。
最佳答案
不,不是。 Zsh 允许您以“明显”的含义编写 ${$(uname -r)##*-}
,但其他常见的 sh 风格 shell 都不会这样做。
您当然可以更改命令以获得所需的输出,例如
$(uname -r | sed 's/.*-//')
但是您无法使用参数扩展结构对 bash 内的输出进行任何进一步处理。如果需要,请使用临时变量。如果您想避免污染函数中的 shell 变量,请使用 local
内置变量(或 declare
或 typeset
)将变量设置为局部变量。如果您需要它来进行提示替换,请使用 PROMPT_COMMAND
准备提示的可变部分。
关于bash - BASH 动态匿名子字符串可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44736925/