加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – UNIX从变量中删除字符

发布时间:2020-12-13 23:52:16 所属栏目:Linux 来源:网络整理
导读:我想从输入字符串中删除最后4个字符串,然后在sed命令中使用它.但我不能让它正常工作 newversion是一个输入参数,它设置为:5.5.5-dev. 我想从输入参数中删除-dev. 我尝试过的: version=${$newversion::-4}sed -i "s|(some name i defined/$imagename:)([^
我想从输入字符串中删除最后4个字符串,然后在sed命令中使用它.但我不能让它正常工作

newversion是一个输入参数,它设置为:5.5.5-dev.
我想从输入参数中删除-dev.

我尝试过的:

version=${$newversion::-4}
sed -i "s|(<<some name i defined>>/$imagename:)([^n]*)|1$version|" docker-compose.yml

错误:

糟糕的替代

解决方法

sed对于这个问题来说太过分了.要从任何POSIX shell中的字符串末尾删除-dev,请使用

version=${newversion%-dev}

或更一般地说

version=${newversion%-???}  # Remove the final - and the next 3 characters

甚至

version=${newversion%-*}  # Remove the final - and anything after it.

如果你使用bash(你似乎不是),你的第一次尝试就是关闭;你只需要额外的$.它应该是

version=${newversion::-4}

虽然该位置的负值需要bash 4.在bash 3中,您需要使用字符串的长度来计算值:

version=${newversion::${#newversion}-4}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读