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

の結果を に保存したい場合はaコマンド置換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 に答える
5

コマンド置換を使用する:

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

echoとtrの周りの目盛り`に注意してください。

于 2012-12-04T10:25:35.370 に答える
1

awkここに行くのは間違った方法ですが、これを行うことができる1つの方法があります。

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 に答える