You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash条件语句出现bad substitution错误:${1,,}语法问题如何解决?

解决Bash中${1,,}的"bad substitution"错误

你碰到的bad substitution错误,核心原因是**${parameter,,}这种小写转换语法是Bash 4.0及以上版本才新增的特性**,如果你的环境满足以下任一情况,就会触发报错:

  1. 系统安装的Bash版本低于4.0
  2. 脚本被非Bash的Shell(比如sh/dash)执行

下面是具体的解决方法:

1. 检查并升级Bash版本

先执行以下命令查看当前Bash版本:

bash --version

如果版本号低于4.0,根据你的系统包管理器升级Bash:

  • Debian/Ubuntu系:
    sudo apt update && sudo apt install bash
    
  • CentOS/RHEL系:
    sudo yum install bash
    

2. 确保用Bash正确执行脚本

即使脚本开头写了#!/bin/bash,如果用sh your_script.sh运行,系统可能会调用POSIX兼容的sh(比如Debian默认的dash),而sh不支持该语法。正确的执行方式是:

  • 给脚本添加执行权限:
    chmod +x your_script.sh
    
  • 直接运行:
    ./your_script.sh
    

或者直接指定Bash运行:

bash your_script.sh

3. 兼容低版本Bash的替代写法

如果无法升级Bash,可以用tr命令实现输入的小写转换,修改后的代码如下:

#!/bin/bash

# 将输入参数转换为小写
lowercase_input=$(echo "$1" | tr '[:upper:]' '[:lower:]')

if [ "$lowercase_input" = herbert ]; then
    echo "Oh, you're the boss here. Welcome!"
elif [ "$lowercase_input" = help ]; then
    echo "Just enter your username, duh!"
else
    echo "I don't know who you are. But you're not the boss of me!"
fi

内容的提问来源于stack exchange,提问作者Tito Lulu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:52:05