sed命令传参

今天使用sed命令修改/etc/profile文件的时候,发现传入参数无法实现功能老是报错。

实例:

chwd(){
  sed -i 's/^wk.*/wk=$1/' /etc/profile
}

解决方法:将单引号修改成双引号才能使得参数生效,修改后如下:

chwd(){
  sed -i "s/^wk.*/wk=$1/" /etc/profile
}

但是一波未平一波又起,我发现我传入的参数是 aa时可以正常使用,但是传入的时路径时就老实报错:

sed: -e expression #1, char 18: unterminated `s' command

于是我把传入的参数“/”进行转换

aa=$(echo $1 | sed 's/\//\\\//g')

得到如下方法,发着就很烦,要转换显得很累赘。

chwd2(){
        aa=$(echo $1 | sed 's/\//\\\//g')
        echo aa:$aa
  sed -i "s/^wk.*/wk=$aa/" /etc/profile
}

我也想着把这行删除,然后从新加一行,我要是一开始想到,我也不会折腾这么久,我估计也就不会得到最后这个完美的结果。

最后我想到这个分割符好像是可以换的,嘿嘿码上试了一下得到如下结果:

chwd(){
  sed -i "s#^wk.*#wk=$1#" /etc/profile
}

一行搞定

------- the end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值