在运行脚本构建阶段,Xcode似乎正在修改bash脚本中的路径

时间:2020-03-12 10:27:20

标签: xcode shell

我有一个简单的脚本,如下所示:

#!/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从命令行运行此脚本,那么一切都会按预期进行。但是,当我在运行脚本构建阶段从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的文件夹。

我根本无法解释这种行为。这似乎与我(曾经)对shell脚本了解的一切完全相反。

Xcode如何影响这一点?我如何使其停止?

1 个答案:

答案 0 :(得分:0)

一如既往,诀窍是意识到这件事比我想象的要多。 Xcode不仅在阶段中运行此脚本,还通过设置一组输出文件来执行此脚本。然后,它在运行脚本之后为那些创建路径。该脚本的行为与应有的完全一样,只是多余的内容使该脚本似乎已损坏。

经验教训:如果Xcode不存在,它将为输出文件创建一个文件夹。

相关问题