我正在从键盘上读取一个字符并将其转换为大写,然后再次显示该字符。 但这显示错误。 我怎么能这样做。
我的代码: -
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
答案 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:]