10

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

我的代码:-

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
4

7 回答 7

28

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

read a;
a=$(echo $a | tr 'a-z' 'A-Z')
echo $a
于 2012-12-04T10:22:52.123 回答
23

这可以通过以下方式本地完成bash

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

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

于 2012-12-04T10:46:09.073 回答
8

AWK 是在完全支持 Unicode 的情况下转换大写/小写的正确方法;-)

echo "öäüßè" | awk 'BEGIN { getline; print toupper($0) }'
于 2015-12-20T08:51:58.077 回答
5

使用命令替换:

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

注意 echo 和 tr 周围的记号`。

于 2012-12-04T10:25:35.370 回答
1

awk是错误的方式去这里,但这是可以做到的一种方式:

a=$(awk 'BEGIN { getline; print toupper($0) }')
echo $a
于 2012-12-04T12:29:57.753 回答
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  
...
于 2014-04-08T04:08:49.647 回答
0

使用 bash 脚本

printf "Type your Message Here: " read message

echo Upper Case: $message | tr [:lower:] [:upper:];
echo Lower Case: $message | tr [:upper:] [:lower:]
于 2021-07-20T12:57:45.487 回答