Динамически вычисляемая переменная Bash - PullRequest
1 голос
/ 15 декабря 2010

У меня есть несколько одинаково структурированных деревьев каталогов. что-то вроде: ~ / Дерево1 / SRC /
бен / Дерево2 / SRC / бен /

Когда я где-то ниже Tree1 / src, я хочу работать с Tree1 / bin. Когда я где-то ниже Tree2 / src, я хочу работать с Tree2 / bin.

Есть ли способ определить переменную оболочки, значение которой зависит от моего текущего рабочего каталога?

Ответы [ 5 ]

3 голосов
/ 15 декабря 2010

PWD - это переменная, уже установленная в текущем каталоге с помощью bash, ksh и других оболочек.

1 голос
/ 15 декабря 2010

Как заявил jlliagre, bash (как и многие другие современные оболочки) хранит текущий рабочий каталог в $ PWD; если это каталог Tree1 / src / some / other /, то из него можно извлечь «Tree1 / bin», просто используя «расширение параметров»:

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

$ echo ${PWD%%src*}bin
Tree1/bin
1 голос
/ 15 декабря 2010

cwd=$(pwd) должен сделать свое дело. Он назначает вывод рабочей папки печати (pwd) переменной.

Чтобы заменить ~ Tree1 / src / dir1 / dir2 на ~ Tree1 / bin, вы можете сделать

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

См. Также Подстановка команд

0 голосов
/ 15 декабря 2010

Два других определения «current» включают каталог, в котором вы находились при запуске сценария (значение start_dir="$PWD" в начале файла, где бы он ни находился) и каталог сценария.сам - script_dir="$(dirname -- "$(readlink -f -- "$0")")".

0 голосов
/ 15 декабря 2010

Обычно переменная $PWD (существующий рабочий каталог) содержит путь к текущему каталогу.Если эта переменная не определена, вы можете использовать команду pwd, которая будет возвращать текущий путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...