Bash更正语法以获取字符串的前两个字母并使其大写
我知道我可以做到我在标题中要求的:Bash更正语法以获取字符串的前两个字母并使其大写,bash,Bash,我知道我可以做到我在标题中要求的: input=abcd input=${input^^} #makes uppercase echo ${input:0:2} #gets first two letters 我想知道在一行中执行这两个操作的正确语法是什么 回显“${input:0:2}” 请参阅手册中的 这并不完全符合你的要求 获取字符串的前两个字母,并使其大写 相反,它将值设为大写,然后获取前两个字母。declare-u input=abcd 回显“${input:0:2}” 请参阅手
input=abcd
input=${input^^} #makes uppercase
echo ${input:0:2} #gets first two letters
我想知道在一行中执行这两个操作的正确语法是什么
回显“${input:0:2}”
请参阅手册中的
这并不完全符合你的要求
获取字符串的前两个字母,并使其大写
相反,它将值设为大写,然后获取前两个字母。declare-u input=abcd
回显“${input:0:2}”
请参阅手册中的
这并不完全符合你的要求
获取字符串的前两个字母,并使其大写
相反,它使值大写,然后获取前两个字母。不声明数组,仅使用参数展开:
echo $( a=abcd; b=${a:0:2} && echo ${b^^} )
其中:
b=${a:0:2}
正在使用子字符串
${b^^}
正在将该子字符串资本化;echo(在命令替换中)返回它
echo(first)在屏幕上打印,不声明数组,仅使用参数展开:
echo $( a=abcd; b=${a:0:2} && echo ${b^^} )
其中:
b=${a:0:2}
正在使用子字符串
${b^^}
正在将该子字符串资本化;echo(在命令替换中)返回它
echo(first)在屏幕上打印我认为它不存在。在大多数情况下,各种参数展开运算符不堆叠。我同意切普纳的观点。Bash不能紧凑地执行复杂的字符串操作。你写的东西和我写的一样(可能会颠倒,以免浪费时间将要丢弃的字母大写)。你可以在gnu sed或awk中这样做,也就是说,
sed的/^\(…\)./\U\1/“我认为它不存在。”。在大多数情况下,各种参数展开运算符不堆叠。我同意切普纳的观点。Bash不能紧凑地执行复杂的字符串操作。你写的是我会写的(可能会颠倒,以免浪费时间将要丢弃的字母大写)。你可以在gnu sed或awk中这样做,即sed的/^\(…\)./\U\1/,而这段代码可以回答这个问题,提供关于如何和/或为什么解决问题的附加上下文将提高答案的长期价值。虽然此代码可能会回答问题,但提供关于如何和/或为什么解决问题的附加上下文将提高答案的长期价值。