我的脚本中有这个小片段:
scriptVars="ProjectEnvironment ProjectType Project SubProject sshUser"
for scriptVar in $scriptVars
do
# Transform all uppercase letters into lowercase
$scriptVar=${!scriptVar,,}
done
echo $ProjectEnvironment
我试图在变量上只强制使用小写字符。唉,它不允许我执行此操作 - 它错误地认为它不是命令。我的猜测是因为我在一个循环中,它有点像一个局部变量,只在循环内。
反正有没有设置它,所以它会工作?
这可能很明显,但值得一提的是,变量是由用户提示的。
编辑 3.11.12
我最终使用了这个,通过使用@chepner 回答:
scriptVars="ProjectEnvironment ProjectType Project SubProject sshUser"
for scriptVar in $scriptVars
do
[[ -n `echo ${!scriptVar} | tr -d "[:lower:][:digit:]-"` ]] &&
declare "$scriptVar=${!scriptVar,,}"
done
echo $ProjectEnvironment
变量中只允许使用字母数字和破折号(我之前对此进行了完整性检查),因此只有当变量具有大写字母时,它才会重新声明它。