Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Как в bash проверить, что скрипт запущен в подкаталоге определенного каталога? / 6 сообщений из 6, страница 1 из 1
13.09.2013, 09:51
    #38395503
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в bash проверить, что скрипт запущен в подкаталоге определенного каталога?
В корне диска есть каталог /BASE.
В нем есть несколько подкаталогов вида /BASE/<date>-<tag>.
В них в свою очередь есть подкаталоги с произвольными именами.
Нужно в скрипте проверить, что скрипт запущен в каталоге /BASE/<date>-diff/<subdir>. То есть скрипт должен быть запущен в подкаталоге третьего уровня, имя подкаталога второго уровня должно оканчиваться на -diff, подкаталогом первого уровня должен быть /BASE.
Не подскажите, как это можно сделать?

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
13.09.2013, 09:58
    #38395512
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в bash проверить, что скрипт запущен в подкаталоге определенного каталога?
В принципе, можно было бы обойтись грубой проверкой — получить имя верхнего каталога (должно быть BASE) и посчитать число слешей в пути (должно быть три). Но хотелось бы сделать понадежнее.
...
Рейтинг: 0 / 0
13.09.2013, 12:32
    #38395861
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в bash проверить, что скрипт запущен в подкаталоге определенного каталога?
Прочитал и не понял, что именно происходит.
Мои варианты:
1. Скрипт размещен без разницы где, а пользователь перед запуском скрипта должен перейти в требуемый каталог.
2. Скрипт размещен в некотором каталоге этого дерева и текущей директорией должен быть этот же каталог.
3. Скрипт размещен в некотором каталоге этого дерева и текущей директорией может быть все что угодно.
...
Рейтинг: 0 / 0
13.09.2013, 13:14
    #38395948
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в bash проверить, что скрипт запущен в подкаталоге определенного каталога?
Первое.
Скрипт располагается где-нибудь (в PATH), а пользователь запускает его из определенного места. Этим местом является определенный каталог третьего уровня (или любой подкаталог этого каталога — если это не слишком усложнит).
Сейчас у меня используется такая конструкция:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
D1=`pwd`
D3=`basename $D1`
D1=`dirname $D1`
D2=`basename $D1`
D1=`dirname $D1`
if [ "$D1" != "$BASE" ]; then
        action_help
        exit 1
fi
if [ "${D2%%-diff}" = "$D2" ]; then
        action_help
        exit 1
fi
Но она мне не очень нравится.
...
Рейтинг: 0 / 0
13.09.2013, 13:48
    #38396011
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в bash проверить, что скрипт запущен в подкаталоге определенного каталога?
Alibek B.,

Погуглите тему регекспов в баше. Возможно, получится что-то вроде такого
Код: sql
1.
if [[ $PWD =~ ^/BASE/.*-diff/* ]]
...
Рейтинг: 0 / 0
13.09.2013, 14:43
    #38396124
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в bash проверить, что скрипт запущен в подкаталоге определенного каталога?
vkleПогуглите тему регекспов в баше. Возможно, получится что-то вроде такого
Да, похоже на решение, спасибо.
Не знал, что баш с регекспами умеет работать.
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Как в bash проверить, что скрипт запущен в подкаталоге определенного каталога? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]