Bash脚本执行报Bad substitution错误,寻求技术解决帮助
解决Bash脚本中的Bad substitution错误
你的脚本里echo "${"$(detect_value)"_COUNT}"这行语法不符合Bash规则——Bash不支持在参数替换的大括号内直接用命令输出拼接变量名,所以触发了bad substitution错误。
下面给你两种可行的解决方法:
方法1:使用间接引用(推荐,更安全)
先把命令输出和后缀拼接成完整的变量名,再通过Bash的间接扩展语法${!var_name}取值:
#!/bin/bash function detect_value(){ # 模拟生成值 echo "ABCD" } ABCD_COUNT=26 # 拼接变量名 var_name="$(detect_value)_COUNT" # 间接引用取值 echo "${!var_name}"
方法2:使用eval命令
eval可以执行动态拼接的命令,注意转义符号的使用避免意外解析:
#!/bin/bash function detect_value(){ echo "ABCD" } ABCD_COUNT=26 # 通过eval动态解析变量 eval echo "\$${$(detect_value)_COUNT}"
内容的提问来源于stack exchange,提问作者Sam Martin
相关产品推荐
相关产品推荐

