sed命令在脚本中执行的一个坑

在Shell脚本中使用sed命令时,只接受双引号包裹字符串,单引号会导致命令失效但不报错,这在调试时可能造成困扰。此外,当源字符串或替换字符串包含/时,需要改变sed的分隔符,例如使用|,以避免错误。理解这一细节对于编写可靠的Shell脚本至关重要。
摘要由CSDN通过智能技术生成

sed命令在脚本中执行的一个坑

sed 在脚本中执行时,只能用双引号

直接shell执行时,单引号和双引号都能成功,在脚本中使用单引号不仅不能成功执行,且不会报错,调试该问题时,让人一脸懵逼,直至怀疑人生!

# shell 命令执行时,效果相同
sed -i 's/源字符串/替换后字符串/g' filename
sed -i "s/源字符串/替换后字符串/g" filename

# shell 脚本运行时,只有双引号才能成功
sed -i "s/源字符串/替换后字符串/g" filename

sed 的分隔符

对于以下常见的sed方式,如果源字符串替换后字符串中包含 /,会执行出错
sed分隔符可以有多种,比如: / |

sed -i "s/源字符串/替换后字符串/g" filename
# 源字符串 或 替换后字符串 中包含 / 时会出错,可修改为 |
sed -i "s|源字符串|替换后字符串|g" filename
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值