Как использовать скрипт, который содержит пути к другим файлам независимо от его расположения?

РЕДАКТИРОВАТЬ :Кажется, вы не можете экспортировать массивы в bash. Возможно, вам потребуется экспортировать функцию, которая настраивает массив, или что-то подобное.

Вы должны использовать массив, иначе аргументы с пробелами будут расширяться до нескольких слов.

export MY_ARGS=("$@")


foo --bar "${MY_ARGS[@]}"
-1
09.09.2019, 22:06
1 ответ

Если сценарий использует относительный путь для поиска файлов и/или каталогов, то его текущий рабочий каталог должен быть правильным, чтобы он мог их найти.

Вы можете изменить текущий рабочий каталог с помощью команды cd. Если первая команда в файле — это команда cd, которая изменяет каталог на абсолютный путь, из которого ожидается выполнение сценария, то пути, указанные далее в сценарии, будут правильными.

Например:

#!/bin/bash

cd /some/path/where/we/expect/to/be || exit 1

# (rest of script here)

Это привело бы к изменению каталога (или преждевременному выходу из сценария, если это было невозможно )до выполнения остальной части сценария.

Дополнительным преимуществом этого является то, что вы можете разместить скрипт в любом удобном для вас месте.

Другой способ решить эту проблему — изменить все пути в сценарии на абсолютные пути.

1
28.01.2020, 05:09

Теги

Похожие вопросы