Bash脚本含done仍报`syntax error: unexpected "("`,数组初始化求助
问题原因及解决办法
你的错误出在missing_services=()这行。这种空数组初始化的语法是Bash专属的,如果你用POSIX标准的sh来运行脚本(比如脚本开头写的是#!/bin/sh,或者用sh yourscript.sh命令执行),就会触发这个语法错误——因为POSIX sh不支持这种数组写法。
解决步骤
- 检查脚本第一行的解释器声明,改成
#!/bin/bash,确保用Bash来执行脚本。 - 如果通过命令行运行,别用
sh yourscript.sh,换成bash yourscript.sh;或者给脚本加执行权限(chmod +x yourscript.sh)后直接运行(前提是开头已经指定了#!/bin/bash)。 - 要是必须在纯POSIX sh环境下工作,没法用Bash,那可以用字符串模拟空数组(比如
missing_services=""),但后续追加元素的逻辑也要对应调整成POSIX兼容的写法——不过更推荐直接用Bash,毕竟数组操作在Bash里更顺手。
内容的提问来源于stack exchange,提问作者jrz
相关产品推荐
相关产品推荐

