Gitlab CI执行命令时提示‘found unknown escape character’错误求助
解决GitLab CI配置的YAML转义错误
你的问题出在YAML对双引号字符串的转义规则上:YAML会解析双引号内的转义序列(比如\n、\t),而你命令里的\\c会被YAML当成尝试转义字符c,但\c并不是YAML支持的合法转义序列,所以触发了解析错误。
给你三个实用的解决办法:
办法一:用单引号包裹命令
单引号在YAML里表示纯字面量字符串,不会解析任何转义字符,直接保留原始内容:
script: - '& $env:P7_TESTING_INSTALLATION_PATH\client\p7batch.exe --log-level=error --run $env:CI_PROJECT_DIR\autotest\jobs\_clear.py'
办法二:替换反斜杠为正斜杠
Windows命令行和绝大多数Windows程序都支持用正斜杠作为路径分隔符,这样完全避开转义问题:
script: - "& $env:P7_TESTING_INSTALLATION_PATH/client/p7batch.exe --log-level=error --run $env:CI_PROJECT_DIR/autotest/jobs/_clear.py"
办法三:用双引号时转义所有反斜杠(不推荐,太繁琐)
如果一定要用双引号,需要把每个路径里的反斜杠写成两个反斜杠(YAML解析后会保留一个反斜杠),注意确保所有反斜杠都转义:
script: - "& $env:P7_TESTING_INSTALLATION_PATH\\\\client\\\\p7batch.exe --log-level=error --run $env:CI_PROJECT_DIR\\\\autotest\\\\jobs\\\\_clear.py"
推荐优先用前两种办法,更简洁不易出错。
内容的提问来源于stack exchange,提问作者IzaeDA
相关产品推荐
相关产品推荐

