2

私はこの文字列を持っています

blah --arg1 --arg2 --etc doh

dohスラッシュで終わることもあれば、そうでないこともあります。

抽出dohして変数に割り当てる必要があります。

その後、それを置き換えます/some/path/doh

私はここに私の試みを入れません、彼らはあまりにも醜いです。

- - 更新しました - -

うーん、答えがわからない、ごめんなさい。

最終的な文字列は次のようになります。

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

変数にdoh割り当てられ、たとえばfoo

4

4 に答える 4

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 に答える
1

オプションを解析するようなものを使用すると仮定するとgetopts、それはただ

echo "/some/path/$1"
于 2012-10-08T21:34:26.917 に答える
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

それが本当にスクリプトからの議論である場合は、tripleeが書いたものを参照してください。

そうでない場合:

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