Как включить функции из скрипта оболочки из другой папки - PullRequest
1 голос
/ 14 апреля 2019

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

|--bringup-scripts
|  |--prep.sh
|--scripts
|  |--i2c0.func
|  |--bit.func

prep.sh выглядит следующим образом:

#!/bin/bash

. ../scripts/i2c0.func

The i2c0.func выглядит следующим образом:

#!/bin/sh

. ./bit.func

Поскольку существует зависимость i2c0.func от bit.func , если я запускаю prep.sh из сценариев воспитания папка выдает ошибку:

. / bit.func: Нет такого файла или каталога

Как мне решить эту проблему?

Ответы [ 2 ]

1 голос
/ 14 апреля 2019

То, что вы могли бы сделать, это не использовать релятивные пути, а определить начальную точку для всех сценариев в файле prep.sh следующим образом:

#!/bin/bash

export ROOT_DIR="$(dirname $PWD)"

. $ROOT_DIR/scripts/i2c0.func

Вы должны включить $ROOT_DIR в качестве префикса для каждого сценария в каталоге scripts , например:

i2c0.func

#!/bin/sh

. $ROOT_DIR/scripts/bit.func
0 голосов
/ 14 апреля 2019

Я не знаю, есть ли стандартный способ сделать это, но вы можете попробовать изменить i2c0.func следующим образом:

#!/bin/sh

. ../scripts/bit.func

Хотя обратите внимание prep.sh получает рабочий каталог своего вызывающего, поэтому он будет работать только при запуске из bringup-scripts/ или scripts/.

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