2010-12-15 7 views
1

私はいくつかの同様に構造化されたディレクトリツリーを持っています。以下のような 何か: 〜/ TREE1/ のsrc/
binに/ 樹上村/ のsrc/binに /動的に計算されたBash変数

私はどこかTREE1/srcの下に、私はTREE1/binにして仕事をしたいです。私はTree2/srcの下のどこかで、Tree2/binで作業したいと思っています。

現在の作業ディレクトリに依存するシェル変数を定義する方法はありますか?

答えて

1

cwd=$(pwd)トリックを行う必要があります。これは、print working directory(pwd)の出力を変数に代入します。

あなたは

bindir=$(pwd | sed 's/src.*/bin/') 

Command Substitution

3

PWDがすでにbashの、kshのことで現在のディレクトリに設定した変数である参照してください行うことができます〜TREE1/binにして〜TREE1/SRC/DIR1/DIR2を交換するには他のシェル。

1

jlliagreが述べているように、bash(他の多くの現代のシェルと同様に)は、$ PWDに現在の作業ディレクトリを格納しています。それはTREE1/srcに/いくつか/その他/ディレクトリである場合、その後、あなただけの「パラメータ展開」を使用して、それから「TREE1/binに」を抽出することができます

$ echo $PWD 
Tree1/src/some/other/directory 

$ echo ${PWD%%src*}bin 
Tree1/bin 
0

を一般$PWD変数(現在の作業ディレクトリ)のパスが含まれています現在のディレクトリに移動します。この変数が定義されていない場合は、現在のパスを返すコマンドpwdを使用できます。

0

「現在の」という2つの他の定義には、スクリプトが開始されたときのディレクトリ(スクリプトの場所に関係なく、ファイルの先頭にあるstart_dir="$PWD"の値)とスクリプト自体のディレクトリ - script_dir="$(dirname -- "$(readlink -f -- "$0")")"

関連する問題