BASH字符串大小写转换时出现Bad Substitution错误求助
解决Bash中
${foo^}参数扩展的"bad substitution"错误 问题原因
你虽然通过bash --version确认了Bash 5.2的版本,但当前执行命令的shell大概率不是Bash——MacOS默认交互式shell是Zsh,在Zsh环境里执行Bash特有的${var^}首字母大写扩展语法,就会触发该错误。
解决步骤
- 先确认当前shell类型:
echo $SHELL
若输出为/bin/zsh,说明你处于Zsh环境中。
- 切换到Bash环境:
bash
执行后验证当前shell:
echo $0
输出应为bash。
- 重新执行测试命令:
foo="mYnAME" echo ${foo^}
此时会正常输出MYnAME(首字母大写的结果)。
替代方案(Zsh环境下实现相同效果)
如果不想切换shell,Zsh中可用以下语法实现字符串首字母大写:
echo ${(C)foo:0:1}${foo:1}
内容的提问来源于stack exchange,提问作者Ritvik Sai Narayan
相关产品推荐
相关产品推荐

