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

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
Как в bash проверить, что скрипт запущен в подкаталоге определенного каталога?
    #38395512
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, можно было бы обойтись грубой проверкой — получить имя верхнего каталога (должно быть BASE) и посчитать число слешей в пути (должно быть три). Но хотелось бы сделать понадежнее.
...
Рейтинг: 0 / 0
Как в bash проверить, что скрипт запущен в подкаталоге определенного каталога?
    #38395861
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитал и не понял, что именно происходит.
Мои варианты:
1. Скрипт размещен без разницы где, а пользователь перед запуском скрипта должен перейти в требуемый каталог.
2. Скрипт размещен в некотором каталоге этого дерева и текущей директорией должен быть этот же каталог.
3. Скрипт размещен в некотором каталоге этого дерева и текущей директорией может быть все что угодно.
...
Рейтинг: 0 / 0
Как в bash проверить, что скрипт запущен в подкаталоге определенного каталога?
    #38395948
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первое.
Скрипт располагается где-нибудь (в 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
Как в bash проверить, что скрипт запущен в подкаталоге определенного каталога?
    #38396011
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

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


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