0

私はBashスクリプトにかなり慣れていないので、次のことをしようとしています:

スクリプトの pwd は「/a/b/c/directory_name.git/」で、「../directory_name」に cd したいと思います。ここで、directory_name は何でもかまいません。これを行う簡単な方法はありますか?

pwd結果を変数に入れて、最後の 4 文字を消去する必要があると思います。

4

5 に答える 5

1

これは機能するはずです:

cd "${PWD%.*}"
于 2011-01-06T19:01:41.787 に答える
1

試す:

cd `pwd | sed -e s/\.git$//`

バッククォートは内部でコマンドを実行し、そのコマンドの出力を へのコマンド ライン引数として使用しますcd

このようなパイプラインをデバッグするには、次を使用すると便利ですecho

echo `pwd | sed -e s/\.git$//`
于 2011-01-06T18:53:09.270 に答える
1
tmpd=${PWD##*/}
cd ../${tmpd%.*}

またはおそらくもっと簡単に

cd ${PWD%.*}

テスト

$ myPWD="/a/b/c/directory_name.git"
$ tmpd=${myPWD##*/}
$ echo "cd ../${tmpd%.*}"
cd ../directory_name

*注意: $PWD には末尾のスラッシュが含まれていないため、${param##word}展開は正常に機能します。

于 2011-01-06T18:56:37.177 に答える
0

こんなに多くの答えがすぐに得られるとは思っていなかったので、私は自分の洗練されていない解決策を考え出す時間がありました:

#!/bin/bash

PWD=`pwd`
LEN=${#PWD}
END_POSITION=LEN-4
WORKING_COPY=${PWD:0:END_POSITION}

echo $WORKING_COPY
cd $WORKING_COPY

おそらく、はるかにエレガントな上記のものがあります:)

于 2011-01-06T19:09:19.300 に答える
0

それbasenameが目的です:

cd ../$(basename "$(pwd)" .git)
于 2011-01-06T19:00:11.180 に答える