Bash 脚本命令行参数为大写

Bash 脚本命令行参数为大写

如果我可以在 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也有效

相关内容