sed命令无法替换含空格的多值TAG变量问题求助
解决sed替换含空格变量时的
unterminated 's' command错误 原命令失效的核心原因:用单引号拼接变量$TAG时,当$TAG包含空格,Shell会将空格后的内容解析为sed的独立参数,直接截断了sed的s替换命令,导致报错。
正确命令写法
用双引号包裹整个sed命令,让Shell完整解析含空格的变量:
TAG="@SFX-TC-4930 or @SFX-TC-4931 or @SFX-TC-3898" sed "s/tagExpression: "tag_expression"/tagExpression: "$TAG"/g" wdioJenkins.conf.js > test.js
验证替换结果
执行后检查替换内容:
grep tagExpression test.js
预期输出:
tagExpression: "@SFX-TC-4930 or @SFX-TC-4931 or @SFX-TC-3898",
更严谨的补充方案
如果变量中可能包含/这类sed默认分隔符,可改用其他符号(比如#)作为分隔符,避免冲突:
sed "s#tagExpression: "tag_expression"#tagExpression: "$TAG"#g" wdioJenkins.conf.js > test.js
内容的提问来源于stack exchange,提问作者mbm
相关产品推荐
相关产品推荐

