XCode, кажется, изменяет пути в bash сценариях во время фазы запуска сценария запуска - PullRequest
0 голосов
/ 12 марта 2020

У меня есть простой сценарий, который выглядит следующим образом:

#!/bin/sh

set -eux

install_folder="${HOME}/Library/MobileDevice/Provisioning Profiles"
mkdir -p "${install_folder}"

if [[ $? != 0 ]]; then
  echo "Unable to create destination directory: ${install_folder}"
  exit 1
fi

Если я запускаю этот сценарий из командной строки, выполнив ./my_script.sh, все работает как положено. Вещи go неправильные, хотя, когда я звоню из Xcode как часть фазы сборки сценария запуска. В настоящее время я называю это наличием "${SRCROOT}/path/to/my_script.sh" на этапе построения сценария запуска, но та же проблема возникает, даже если я непосредственно копирую и вставляю приведенный выше код.

Так в чем же проблема? Что ж, похоже Xcode вызывает создание неверной папки. Когда я запускаю из командной строки, я получаю папку с именем Provisioning Profiles внутри ~/Library/MobileDevice/, как и ожидалось. Когда я запускаю из Xcode, папка называется Provisioning\ Profiles (что \ буквально является частью имени).

Но это становится страннее. Если я изменю строку mkdir на mkdir -p $install_folder, то я ожидаю получить папку с именем Provisioning внутри папки MobileDevice и папку с именем Profiles, где бы я ни запускал команду. Вот что происходит, когда я бегу из командной строки. Однако, если я запускаю из Xcode, я получаю папку Profiles внутри MobileDevice, но я также получаю папку с именем Provisioning\ Profiles.

Я вообще не могу объяснить это поведение. Кажется, это полностью противоречит всему, что я (думал) знал о скриптах оболочки.

Как Xcode влияет на это? Как мне это остановить?

1 Ответ

0 голосов
/ 12 марта 2020

Хитрость, как всегда, заключалась в том, что в этом было нечто большее, чем я думал. XCode не просто запускал этот скрипт в фазе, он делал это с установленным списком выходных файлов. Затем он создавал путь для тех, кто запускал скрипт. Сценарий вел себя именно так, как и должно было быть, это были просто дополнительные вещи, которые сделали его неработоспособным.

Извлеченный урок: Xcode создаст папку для выходных файлов, если она не существует.

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