Bash

將 arg 轉換為大寫以作為變數傳遞

  • March 21, 2017

有沒有辦法將命令行參數轉換為大寫並將其作為正在呼叫的腳本中的變數傳遞?

Eg. ./deploy_app.csh 1.2.3.4 middleware 

應該將中間件轉換為 MIDDLEWARE 並將其作為變數傳遞到腳本中任何需要變數替換的地方。

我知道我可以使用 echo 和 awk 來獲取此輸出,但嘗試檢查是否有不使用該組合的方法

在腳本內部使用 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}

使用tr而不是 shell 功能(儘管僅限於單字節字母僅在某些tr實現中,如 GNU):

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

本頁總結了不同 UNIX shell 的許多特性,包括文本操作:http ://hyperpolyglot.org/unix-shells 。

引用自:https://unix.stackexchange.com/questions/352866