У меня есть очень маленький файл .command настроенный на Mac-сервере, который в основном предназначен только для запуска процесса Python. Другие люди более интуитивно понятны, чем открывают терминал, набирают «python», а затем перетаскивают файл.

Однако это также требует, чтобы я сначала изменил каталог, так как скрипт будет работать с файлами на сервере и должен работать из того же каталога, в котором он содержится. Проблема в том, что два человека, которым нужно это использовать, имеют разные пути к файлу из-за способа настройки сервера.

Поскольку я не могу изменить серверы, чтобы они имели одинаковые пути, я вместо этого попробовал использовать команды cd для обоих путей, и это, похоже, работает. Так как один путь не всегда будет существовать, а другой будет, одна команда не будет работать, пока другая выполняется.

cd /Volumes/Server/scripts/Script
cd /Volumes/Macintosh\ HD2/Server/Scripts/Script
python Process.py

Который даст мне этот ответ:

/Volumes/Server/scripts/Script ; exit;
/Volumes/Macintosh\ HD2/Server/Scripts/Script: line 2: cd: /Volumes/Macintosh\ HD2/Server/Scripts/Script: No such file or directory
### My script runs here with the correct path ###

Кажется, это работает, но я знаю, что если бы по какой-то причине один человек имел оба пути в качестве допустимых путей, я столкнулся бы с проблемой. Я также не знаю, может ли это привести к другим проблемам. Даже если кажется, что ошибки проходят бесшумно, я не уверен, что они никогда не вызовут проблем. Итак, у меня есть две части вопроса: каковы недостатки использования команд таким образом, и есть ли лучший способ настроить этот файл .command ?

1 ответ1

1

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

if [ -d "$DIRECTORY" ]; then
    # Control will enter here if $DIRECTORY exists.
fi

(см. https://stackoverflow.com/questions/59838/check-if-a-directory-exists-in-a-shell-script)

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .