我有这个字符串
blah --arg1 --arg2 --etc doh
有时doh
以斜线结尾,有时则不是。
我需要提取doh
并分配给var。
然后将其替换为/some/path/doh
我不会把我的尝试放在这里,它们太丑了。
---更新---
mm,不确定我理解答案,对不起。
最后一个字符串应该是:
blah --arg1 --arg2 --etc /some/path/doh
和doh
分配给var,比如foo
答案 0 :(得分:1)
假设您使用类似getopts
的内容来解析选项,那只是
echo "/some/path/$1"
答案 1 :(得分:1)
有点难看但正在工作
首先摆脱最终的斜杠:
$ 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
答案 2 :(得分:0)
如果字符串不是命令行参数:
VAR="blah --arg1 --arg2 --etc doh"
LAST=`echo $VAR | awk -F" " '{ print $NF }'`
echo "/some/path/$LAST"
答案 3 :(得分:0)
如果它真的是来自脚本的参数,请看看tripleee写的是什么。
如果不是:
echo "/some/path/$(echo "$STRING" | awk '{print $NF}')"