在zsh
脚本中,
echo ${X:-4711}
输出变量x的值,如果没有,则输出4711。
echo ${X:u}
输出变量x的值,转换为大写。
我想知道是否有办法把两者结合起来,即
tmp=${X:-4711}
echo $X:u
不引入辅助变量。
最佳答案
$ echo ${${X:-4711}:u}
4711
$ X=hello
$ echo ${${X:-4711}:u}
HELLO
从
man zshexpn
:如果`${…}'类型参数表达式或`$(…)`类型命令
替换用于代替上面的名称,它首先展开
结果被用作name的值。因此这是可能的
要执行嵌套操作:`${foo}head}%tail}替换值
删除了“head”和“tail”的“$foo”的。
关于linux - zsh参数扩展语法:结合默认值和大写转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34591269/