Python生成的Bash脚本报语法错误,PyCharm注释取消后恢复正常
Bash脚本语法错误
unexpected token '('的解决:PyCharm自动格式化坑点 问题复现
我通过Python基于Bash脚本模板生成新脚本,流程如下:
- 读取模板文件,替换变量值
- 生成新脚本文件并赋予执行权限(
chmod +x job_load_8.sh) - 运行脚本时终端报错:
./job_load_8.sh: line 4: syntax error near unexpected token `('
排查与解决
- 在PyCharm中注释所有
echo语句并保存,脚本运行恢复正常 - 取消
echo语句注释后,脚本可正常执行 - 定位原因:PyCharm的自动格式化功能在保存时悄悄修改了脚本语法——比如未加引号的带括号
echo语句被错误处理,破坏了Bash语法结构
补充参考细节
Python生成脚本的核心代码示例
# 读取Bash模板文件 with open("job_template.sh", "r") as template_file: script_content = template_file.read() # 替换模板中的变量占位符 script_content = script_content.replace("{JOB_NUMBER}", "8") script_content = script_content.replace("{TARGET_DIR}", "/opt/data/loads") # 写入生成的新脚本 with open("job_load_8.sh", "w") as new_script: new_script.write(script_content) # 给脚本添加执行权限 import os os.chmod("job_load_8.sh", 0o755)
脚本修改前后的语法差异
- 报错版本(格式化后):
echo (Loading job 8 into /opt/data/loads...)(括号未转义,触发Bash语法错误) - 正常版本(修正后):
echo '(Loading job 8 into /opt/data/loads...)'(用单引号包裹字符串,符合Bash语法要求)
内容的提问来源于stack exchange,提问作者Pratik Dash
相关产品推荐
相关产品推荐

