有没有办法将命令行参数转换为大写并将其作为正在调用的脚本中的变量传递?
Eg. ./deploy_app.csh 1.2.3.4 middleware
Run Code Online (Sandbox Code Playgroud)
应该将中间件转换为 MIDDLEWARE 并将其作为脚本内部的变量传递,它需要变量替换。
我知道我可以使用 echo 和 awk 来获取此输出,但尝试检查是否有不使用该组合的方法
Jef*_*ler 13
在脚本中使用 bash (4.0+):
newvarname=${3^^}
Run Code Online (Sandbox Code Playgroud)
使用 tcsh:
set newvarname = $3:u:q
Run Code Online (Sandbox Code Playgroud)
使用 zsh:
# tcsh-like syntax:
newvarname=${3:u} # or just $3:u
# native syntax:
newvarname=${(U)3}
Run Code Online (Sandbox Code Playgroud)
使用tr而不是 shell 功能(尽管仅限于单字节字母仅在trGNU 等某些实现中):
newvarname=$(printf "%s" "$3" | tr '[:lower:]' '[:upper:]')
Run Code Online (Sandbox Code Playgroud)
此页面总结了不同 UNIX shell 的许多功能,包括文本操作:http : //hyperpolyglot.org/unix-shells。
小智 9
在 Bash 中,您可以使用 将变量声明为大写-u,然后它会自动转换。
$ declare -u a
$ b=abcd
$ a=$b
$ echo $a
ABCD
Run Code Online (Sandbox Code Playgroud)