我正在从键盘读取一个字符并将其转换为大写,然后再次显示该字符。但这显示错误。我怎样才能做到这一点。
我的代码:-
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
如果您想存储a
back in的结果a
,那么您可以使用命令替换:
read a;
a=$(echo $a | tr 'a-z' 'A-Z')
echo $a
这可以通过以下方式本地完成bash
:
read a;
a="${a^^}"
echo "$a"
无需调用其他命令,例如tr
,因为bash
可以自己执行此操作。
AWK 是在完全支持 Unicode 的情况下转换大写/小写的正确方法;-)
echo "öäüßè" | awk 'BEGIN { getline; print toupper($0) }'
使用命令替换:
a=`echo $a | tr 'a-z' 'A-Z'`
注意 echo 和 tr 周围的记号`。
awk
是错误的方式去这里,但这是可以做到的一种方式:
a=$(awk 'BEGIN { getline; print toupper($0) }')
echo $a
无法获取
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
...
使用 bash 脚本
printf "Type your Message Here: " read message
echo Upper Case: $message | tr [:lower:] [:upper:];
echo Lower Case: $message | tr [:upper:] [:lower:]