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/

10-09 09:04