运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

在Linux中UNIX从变量中删除字符

运维开发网 https://www.qedev.com 2020-07-07 08:43 出处:网络
我想从输入字符串中删除最后4个字符串,然后在sed命令中使用它.但我不能让它正常工作
我想从输入字符串中删除最后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}

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号