我正在從鍵盤讀取一個字符並將其轉換爲大寫,然後再次顯示該字符。 但是這顯示錯誤。 我該怎麼做。在shell中轉換爲大寫
我的代碼: -
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
我正在從鍵盤讀取一個字符並將其轉換爲大寫,然後再次顯示該字符。 但是這顯示錯誤。 我該怎麼做。在shell中轉換爲大寫
我的代碼: -
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
,那麼你可以做使用命令替換 :
read a;
a=$(echo $a | tr 'a-z' 'A-Z')
echo $a
使用命令取代:
a=`echo $a | tr 'a-z' 'A-Z'`
注意滴答`圍繞回聲和tr。
read a;
a="${a^^}"
echo "$a"
無需調用其他命令,如tr
,因爲bash
可以做到這一點本身:
這可以本身在bash
如下進行。
我認爲OP從未提及過使用什麼外殼。 – axiom
減少因爲不起作用:#a =「$ {a ^^}」 -bash:$ {a ^^}:錯誤的替換 –
您是如何開始'bash',@KevinBuchs?它在這裏工作,但它不適用於'sh'。另外,當時變量「a」的內容是什麼?對我而言,這是最優雅的解決方案,因爲它避免了進一步的流程。 –
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
...
AWK是大/小寫轉換與完整的Unicode支持;-)
echo "öäüßè" | awk 'BEGIN { getline; print toupper($0) }'
你自己做一個以上類似的話正確的方式,但在這裏你假定shell是'bash'(或者非常相似)。例如,這對'fish'不起作用。 –