将 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}

使用而不是 shell 功能(尽管仅在某些实现(例如 GNU 的实现中)tr仅限于单字节字母):tr

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

本页总结了不同 UNIX shell 的许多功能,包括文本操作:http://hyperpolyglot.org/unix-shells

答案2

在 Bash 中,您可以使用 声明变量为大写-u,然后它会自动转换。

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

相关内容