shell脚本中每个输入字符串大写

Kam*_*ani 0 shell ksh

我接受一些字符串作为我的脚本的用户输入,例如 -

read -p "User's full name : " FULLNAME
read -p "User's Manager's name : " MGRNAME
.
.
Run Code Online (Sandbox Code Playgroud)

我希望所有输入字符串都大写,即输入字符串中的每个单词都大写。

我写了一个简单的函数,例如 -

capitalize()
{
        $1=`echo ${$1}|sed -e "s/\b\(.\)/\u\1/g"`
}
Run Code Online (Sandbox Code Playgroud)

并将这个函数称为 -

capitalize FULLNAME
Run Code Online (Sandbox Code Playgroud)

它给出了以下错误 -

line 77: ${$1}: bad substitution
Run Code Online (Sandbox Code Playgroud)

还尝试过间接扩展 -

capitalize()
    {
            $1=`echo ${!1^}`
    }
Run Code Online (Sandbox Code Playgroud)

它抛出以下错误 -

line 77: FULLNAME=Kamlesh: command not found
Run Code Online (Sandbox Code Playgroud)

请帮助提供正确的语法或任何其他方式来实现此目的。

示例输出 - 我正在读取 FULLNAME 变量中的输入。当我调用 Capitalize() 时,它应该更新 FULLNAME 变量本身内的值。

例如,如果用户输入是 - “kamlesh gallani”

如果我现在调用大写 FULLNAME,那么 FULLNAME 应该包含“Kamlesh Gallani”

hee*_*ayl 6

使用bash的参数扩展,假设变量var

${var^}  ## Only first character
${var^^} ## All characters
Run Code Online (Sandbox Code Playgroud)

例子:

$ foo=bar

$ echo "${foo^}"
Bar

$ echo "${foo^^}"
BAR
Run Code Online (Sandbox Code Playgroud)