変数として渡すためにargを大文字に変換する

変数として渡すためにargを大文字に変換する

コマンドライン引数を大文字に変換し、呼び出されるスクリプトの変数に渡す方法はありますか?

Eg. ./deploy_app.csh 1.2.3.4 middleware 

ミドルウェアをMIDDLEWAREに変換し、変数置換が必要なスクリプトから変数に渡す必要があります。

echoとawkを使用してこの出力を取得できることを知っていますが、その組み合わせを使用せずに方法があるかどうかを確認したいと思います。

答え1

スクリプト内でbash(4.0+)を使用する:

newvarname=${3^^}

tcshを使用してください:

set newvarname = $3:u:q

zshを使う:

# tcsh-like syntax:
newvarname=${3:u} # or just $3:u
# native syntax:
newvarname=${(U)3}

シェル関数の代わりに使用してください(一部の実装(例:GNU)ではtrシングルバイト文字に限定されますが)。tr

newvarname=$(printf "%s" "$3" | tr '[:lower:]' '[:upper:]')

このページには、テキスト操作を含むさまざまなUNIXシェルのさまざまな機能がまとめられています。http://hyperpolyglot.org/unix-shells

答え2

Bashでは、変数を大文字で宣言すると-u自動的に変換されます。

$ declare -u a
$ b=abcd
$ a=$b
$ echo $a
ABCD

関連情報