如果我可以在 bash shell 中执行此操作:
$ STRING="A String"
$ echo ${STRING^^}
A STRING
如何将命令行参数更改为大写?
我试过:
GUARD=${1^^}
该生产线生产糟糕的替换该行的错误。
答案1
让我们从这个测试脚本开始:
$ cat script.sh
GUARD=${1^^}
echo $GUARD
这有效:
$ bash script.sh abc
ABC
这不起作用:
$ sh script.sh abc
script.sh: 1: script.sh: Bad substitution
这是因为,在我的系统上,像大多数类似 Debian 的系统一样,默认 shell,/bin/sh
是不是重击。要获得 bash 功能,需要显式调用 bash。
类似 Debian 的系统上的默认 shell 是dash
.选择它不是因为功能而是因为速度。它不支持^^
。要了解它支持什么,请阅读man dash
。
答案2
使用tr
命令:
脚本:
#!/bin/bash
echo $@ | tr '[a-z]' '[A-Z]'
查看:
$ bash myscript.sh abc 123 abc
ABC 123 ABC
答案3
typeset -u VAR=VALUE
也有效