Shell脚本变量在SED中无法生效,求解决方案
问题分析与解决
你的代码存在两个关键问题导致变量替换版本失效:
- 变量名拼写错误:
echo $firstring中的$firstring应为$firstString,错误的变量名会让echo输出空值,sed自然无法处理正确内容。 - 变量输出未加引号(可选优化):虽然当前字符串不含空格,但给echo的变量加上双引号能避免后续字符串包含特殊字符时出现意外分割。
修正后的完整代码如下:
firstString="/dev_app/Files/" echo "$firstString" String1="/dev_app/" echo "$String1" replacedstring="/dev/app/" echo "$replacedstring" echo "$firstString" | sed -e "s|${String1}|${replacedstring}|"
执行后会输出预期结果:
/dev_app/Files/ /dev_app/ /dev/app/ /dev/app/Files/
解释:
- 修正拼写错误后,sed能接收到正确的源字符串进行替换。
- 你使用
|作为sed分隔符的写法是正确的,避免了变量中/与默认分隔符冲突的问题。
内容的提问来源于stack exchange,提问作者alangilbi
相关产品推荐
相关产品推荐

