Скрипт Bash для запуска команд в других каталогах независимо от уровня - PullRequest
1 голос
/ 06 ноября 2019

У меня есть структура каталогов, которая выглядит примерно так

|- .ci
|- node_project
|- scripts
|- terraform

В каталоге scripts я хочу добавить сценарии-оболочки для таких вещей, как build.sh, verify.sh и deploy.sh, однако, если мырассмотрим build.sh содержимое может быть что-то вроде

#!/usr/bin/env bash

cd ../node_project
npm run build

Это будет работать, пока вы находитесь в каталоге scripts.

Как бы я создал сценарий, который также будет работатьон вызывается из корневого каталога проекта как scripts/build.sh или даже из-за пределов проекта как <some random path>/scripts/build.sh?

1 Ответ

1 голос
/ 06 ноября 2019

${BASH_SOURCE[0]} имеет имя текущего скрипта. Получить каталог сценария и идти оттуда.

cd "$(dirname "${BASH_SOURCE[0]}")"

cd ../node_project
npm run build

Будьте осторожны. Если пользователь прошел по каким-либо относительным путям, он больше не будет корректно разрешаться.

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