我有这个字符串
blah --arg1 --arg2 --etc doh
有时 doh
以斜线结尾,有时则不然。
我需要提取doh
并分配给一个变量。
然后将其替换为/some/path/doh
我不会把我的尝试放在这里,它们太丑了。
--- 已更新 ---
嗯,抱歉,我不确定我是否理解答案。
最终的字符串应该是这样的:
blah --arg1 --arg2 --etc /some/path/doh
和doh
分配给一个var,比如foo
最佳答案
有点丑,但是可以用
首先摆脱最终的尾部斜线:
$ str='blah --arg1 --arg2 --etc doh///'
$ str=$(shopt -s extglob; echo "${str%%+(/)}")
$ echo $str
blah --arg1 --arg2 --etc doh
下一步提取doh
$ var=${str##* }
$ echo $var
doh
最后从字符串中删除它并添加回来前缀 /some/path
$ echo "${str%"$var"} /some/path/$var"
blah --arg1 --arg2 --etc /some/path/doh
关于bash - 获取字符串的一部分然后更新它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12789714/