在shell中转换为大写

时间:2012-12-04 10:19:04

标签: shell awk uppercase

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

我的代码: -

read a;
a=echo $a | tr 'a-z' 'A-Z'
echo $a

我也试过这个: -

read option;
eval $(awk -v option=$option '{print "a="toupper(option);}')
echo $a

7 个答案:

答案 0 :(得分:14)

如果您想将a的结果存储回a,那么您可以使用命令替换

read a;
a=$(echo $a | tr 'a-z' 'A-Z')
echo $a

答案 1 :(得分:14)

这可以在bash中本地完成,如下所示:

read a;
a="${a^^}"
echo "$a"

无需调用tr等其他命令,因为bash可以自行执行此操作。

答案 2 :(得分:5)

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

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

答案 3 :(得分:2)

使用命令替换:

a=`echo $a | tr 'a-z' 'A-Z'`

注意echo和tr。

周围的刻度`

答案 4 :(得分:1)

awk是错误的方式,但这是一种可行的方式:

a=$(awk 'BEGIN { getline; print toupper($0) }')
echo $a

答案 5 :(得分:0)

无法获得

a=`echo $a | tr 'a-z' 'A-Z'` 

工作,但

a=`echo $a | tr '[a-z]' '[A-Z]'`

做了(注意额外的正则表达式[]括号 在/ usr / bin / sh脚本中,这在

中起作用
...
while getopts ":l:c:" option; do  
   case "$option"  
   in  
      l) L_OPT=`echo ${OPTARG}| tr '[a-z]' '[A-Z]'`  
         ;;  
      c) C_OPT=`echo ${OPTARG} | tr '[a-z]' [A-Z]'`  
         ;;  
      \?)  
         echo $USAGE  
         exit 1  
         ;;  
   esac  
done  
...

答案 6 :(得分:0)

使用 bash 脚本

printf "Type your Message Here: " read message

echo Upper Case: $message | tr [:lower:] [:upper:];
echo Lower Case: $message | tr [:upper:] [:lower:]