如果将^
附加到变量,则Bash将其内容的第一个字母大写。 (类似地,,
将它发送到小写并且加倍,其中任何一个都将转换应用于整个字符串,而不仅仅是第一个字母。)
foo="hello world"
echo ${foo^} # Hello world
您也可以${variable:position:length}
提取子字符串:
echo ${foo:0:1} # h
到目前为止,我还没有找到一种方法来组合这些,显然,创建一个临时变量。是否有一个表单,我可以从任意字符串中获得大写的第一个字母?
答案 0 :(得分:2)
它不会改变您在无法“链接”扩展方面所看到的基本限制,但您可以将扩展的结果分配给同一个变量并取消临时变量。
例如:
A=text
A="${A^}"
A="${A//x/s}"
echo "$A"
回应“测试”。
答案 1 :(得分:1)
您可以将tr
与substring:
tr [[:lower:]] [[:upper:]] <<< "${foo:0:1}"
H
答案 2 :(得分:1)
没有。参数扩展操作符不构成,因此如果您需要多个副作用,则需要一个临时变量(可以包括覆盖原始值,如@fred所示)或外部工具来处理扩展的结果(如图所示) @anubhava)。
您的另一种选择是使用支持支持更复杂操作的其他shell,例如zsh
:
% foo="hello world"
% % print ${(U)${foo:0:1}}
H