スクリプトの最後のフォルダなしで現在のパスを取得する方法は?

スクリプトの最後のフォルダなしで現在のパスを取得する方法は?

スクリプトが実行されるフォルダ自体を除いて、現在のパスを変数に保存するスクリプトを実行したいと思います。例:

/tmp/test/test2/test3/test.sh

path=$PWD
echo $path

しかし、/tmp/test/test2/test3shスクリプトを含むフォルダを除外したいと思います。

だから私が望む結果は次のとおりです。 /tmp/test/test2

ベストアンサー1

あなたはそれを使用することができます

dir=${PWD%/*}    # or:  dir=$( dirname "$PWD" )

または

dir="$PWD/.."

または

dir=".."

最初のケースでは、PWD現在の作業ディレクトリを含む変数を/使用して、最後のディレクトリとそれ以降のすべてのエントリを削除して親ディレクトリへのパスを取得します。

2番目の場合、PWD変数は単に上記のディレクトリへのパスを作成するために使用されます..

3番目のケースでは、現在のディレクトリへの相対パスを使用して上記のディレクトリを参照するだけです。

どの代替を使用するかは、パスを使用したいターゲットによって異なります。

例:

$ echo $PWD
/tmp/shell-sh.jAtMYgn0
$ dir=${PWD%/*}
$ echo "$dir"
/tmp
$ dir="$PWD/.."
$ echo "$dir"
/tmp/shell-sh.jAtMYgn0/..
$ dir=".."
$ echo "$dir"
..

おすすめ記事