我想用bash将字符串中的第一个字符大写。
foo="bar";
//uppercase first character
echo $foo;
应打印“Bar”;
我想用bash将字符串中的第一个字符大写。
foo="bar";
//uppercase first character
echo $foo;
应打印“Bar”;
当前回答
这也可以……
FooBar=baz
echo ${FooBar^^${FooBar:0:1}}
=> Baz
FooBar=baz
echo ${FooBar^^${FooBar:1:1}}
=> bAz
FooBar=baz
echo ${FooBar^^${FooBar:2:2}}
=> baZ
等等。
来源:
Bash手动:Shell参数扩展 完整Bash指南:参数 Bash黑客的维基参数扩展
入门/教程:
Cyberciti.biz: 8。转换为大写到小写或反之亦然 Opensource.com: Bash中参数展开的介绍
其他回答
它也可以在纯bash中使用bash-3.2完成:
# First, get the first character.
fl=${foo:0:1}
# Safety check: it must be a letter :).
if [[ ${fl} == [a-z] ]]; then
# Now, obtain its octal value using printf (builtin).
ord=$(printf '%o' "'${fl}")
# Fun fact: [a-z] maps onto 0141..0172. [A-Z] is 0101..0132.
# We can use decimal '- 40' to get the expected result!
ord=$(( ord - 40 ))
# Finally, map the new value back to a character.
fl=$(printf '%b' '\'${ord})
fi
echo "${fl}${foo:1}"
使用sed的一种方法:
echo "$(echo "$foo" | sed 's/.*/\u&/')"
打印:
Bar
这也可以……
FooBar=baz
echo ${FooBar^^${FooBar:0:1}}
=> Baz
FooBar=baz
echo ${FooBar^^${FooBar:1:1}}
=> bAz
FooBar=baz
echo ${FooBar^^${FooBar:2:2}}
=> baZ
等等。
来源:
Bash手动:Shell参数扩展 完整Bash指南:参数 Bash黑客的维基参数扩展
入门/教程:
Cyberciti.biz: 8。转换为大写到小写或反之亦然 Opensource.com: Bash中参数展开的介绍
Linux和OSX的另一种干净的解决方案,它也可以与bash变量一起使用
python -c "print(\"abc\".capitalize())"
返回美国广播公司
$ foo="bar";
$ foo=`echo ${foo:0:1} | tr '[a-z]' '[A-Z]'`${foo:1}
$ echo $foo
Bar