在shell中转换为大写

avi*_*hse 6 shell awk uppercase

我正在从键盘读取一个字符并将其转换为大写,然后再次显示该字符.但这显示错误.我怎样才能做到这一点.

我的代码: -

read a;
a=echo $a | tr 'a-z' 'A-Z'
echo $a
Run Code Online (Sandbox Code Playgroud)

我也试过这个: -

read option;
eval $(awk -v option=$option '{print "a="toupper(option);}')
echo $a
Run Code Online (Sandbox Code Playgroud)

P.P*_*.P. 16

如果要将结果存储a回来a,则可以使用命令替换:

read a;
a=$(echo $a | tr 'a-z' 'A-Z')
echo $a
Run Code Online (Sandbox Code Playgroud)


dog*_*ane 16

这可以原生bash如下:

read a;
a="${a^^}"
echo "$a"
Run Code Online (Sandbox Code Playgroud)

没有必要调用其他命令tr,因为bash可以自己执行此操作.

  • 我认为OP从未提及使用的shell. (3认同)
  • Bash 4.0 中添加了`^^` 参数扩展。 (2认同)

axi*_*iom 6

使用命令替换

a=`echo $a | tr 'a-z' 'A-Z'`
Run Code Online (Sandbox Code Playgroud)

注意和`周围的勾号。echotr


小智 5

AWK是使用完整的Unicode支持转换大小写的正确方法;-)

echo "öäüßè" | awk 'BEGIN { getline; print toupper($0) }'
Run Code Online (Sandbox Code Playgroud)