2

我有这个字符串

blah --arg1 --arg2 --etc doh

有时doh以斜线结尾,有时不是。

我需要提取doh并分配给一个var。

然后将其替换为/some/path/doh

我不会把我的尝试放在这里,它们太丑陋了。

- - 更新 - -

mm,我不确定我是否理解答案,对不起。

最后的字符串应该是这样的:

blah --arg1 --arg2 --etc /some/path/doh

doh分配给一个var,比如说foo

4

4 回答 4

1

假设你使用类似的东西getopts来解析选项,它只是

echo "/some/path/$1"
于 2012-10-08T21:34:26.917 回答
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
于 2012-10-08T21:44:40.283 回答
0

如果字符串不是命令行参数:

VAR="blah --arg1 --arg2 --etc doh"
LAST=`echo $VAR | awk -F" " '{ print $NF }'`
echo "/some/path/$LAST"
于 2012-10-08T21:38:25.170 回答
0

如果它确实来自脚本的参数,请查看 Tripleee 写的内容。

如果不:

echo "/some/path/$(echo "$STRING" | awk '{print $NF}')"
于 2012-10-08T21:38:28.733 回答