每个输入字符串我接受弦数作为用户输入到我的剧本一样 -大写在shell脚本
read -p "User's full name : " FULLNAME
read -p "User's Manager's name : " MGRNAME
.
.
我希望所有输入的字符串是大写,即利用输入字符串中的每个字。
我写了一个简单的函数一样 -
capitalize()
{
$1=`echo ${$1}|sed -e "s/\b\(.\)/\u\1/g"`
}
,并呼吁这个功能 -
capitalize FULLNAME
这是给下面的错误 -
line 77: ${$1}: bad substitution
还试图间接扩张 -
capitalize()
{
$1=`echo ${!1^}`
}
它抛出下面的错误 -
line 77: FULLNAME=Kamlesh: command not found
请使用正确的语法或任何其他方式来实现这一目标提供帮助。
示例输出 - 我正在读取FULLNAME变量中的输入。当我调用capitalize()时,它应该更新FULLNAME变量本身的值。
对于例如,如果用户输入是 - “卡姆利什gallani”
如果我请现在利用FULLNAME,然后FULLNAME应包含“卡姆利什Gallani”
标记了你都KSH和bash。哪一个?在bash 4.x中有相关的语法扩展,ksh没有。 **请仅为您实际使用的shell标记** –
顺便说一句,对于'$ {$ 1}',如果您希望这样做,那么您应该查找[间接扩展](http:// mywiki .wooledge.org/BashFAQ/006#Evaluating_indirect.2Freference_variables)。 –
(...在不同的说明中,全变量变量名用于系统和shell的含义变量,而具有至少一个小写字符的变量的名称空间保留给应用程序使用。因此,脚本应该使用小写变量以避免错误地覆盖操作系统的含义,这是由POSIX规则规定的环境变量规定的,但是设置与环境变量名称重叠的shell变量将覆盖后者,所以该规则适用于地方)。 –