动态计算Bash变量

时间:2010-12-15 07:04:52

标签: linux bash shell

我有几个类似结构的目录树。 就像是:   〜/     树1 /        SRC /
       斌/     Tree2 /        SRC /        箱/

当我在Tree1 / src下面的某个地方时,我想使用Tree1 / bin。当我在Tree2 / src下面的某个地方时,我想使用Tree2 / bin。

有没有办法定义一个shell变量,其值取决于我当前的工作目录?

5 个答案:

答案 0 :(得分:3)

PWD是已经通过bash,ksh和其他shell设置到当前目录的变量。

答案 1 :(得分:1)

cwd=$(pwd)应该做到这一点。它将打印工作目录(pwd)的输出分配给变量。

用〜Tree1 / bin替换~Tree1 / src / dir1 / dir2你可以做到

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

另见Command Substitution

答案 2 :(得分:1)

正如jlliagre所说,bash(和许多其他现代shell一样)将当前工作目录存储在$ PWD中;如果它是Tree1 / src / some / other /目录,那么只需使用“参数扩展”即可从中提取“Tree1 / bin”:

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

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

答案 3 :(得分:0)

通常$PWD变量(当前工作目录)包含当前目录的路径。如果未定义此变量,则可以使用将返回当前路径的pwd命令。

答案 4 :(得分:0)

“当前”的另外两个定义包括脚本启动时所在的目录(无论脚本在何处,都是文件开头的start_dir="$PWD"的值)和目录脚本本身 - script_dir="$(dirname -- "$(readlink -f -- "$0")")"