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