在shell中转换为大写
我正在从键盘读取一个字符,并将其转换为大写,然后再次显示该字符。 但这是一个错误。 我怎样才能做到这一点 我的代码:-在shell中转换为大写,shell,awk,uppercase,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 如果要将a的结果存储回a,则可以使用命令替换: 使用命令替换: a=`echo $a | tr 'a-z' 'A
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
的结果存储回a
,则可以使用命令替换:
使用命令替换:
a=`echo $a | tr 'a-z' 'A-Z'`
请注意echo和tr周围的记号。这可以在
bash
中本机完成,如下所示:
read a;
a="${a^^}"
echo "$a"
不需要调用其他命令,如
tr
,因为bash
本身就可以做到这一点。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]'`
did(注意附加的正则表达式[]括号。在/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
...
AWK是在完全支持Unicode的情况下转换大小写的正确方法;-)
我想OP从来没有提到正在使用什么shell。递减是因为不起作用:#a=“${a^^^}”-bash:${a^^^}:错误的替换您是如何开始
bash
,@KevinBuchs的?例如,它可以在这里工作,但不能与sh
一起工作。另外,此时变量a
的内容是什么?对我来说,这是最优雅的解决方案,因为它避免了进一步的过程。Bash 4.0中添加了^ ^
参数扩展。您在自己上面也做了类似的评论,但这里您假设shell也是Bash
(或足够相似)。例如,这不适用于fish
。
...
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
...
echo "öäüßè" | awk 'BEGIN { getline; print toupper($0) }'