我正在尝试在Mac上执行更新或使用PlistBuddy插入。
脚本
我写了以下脚本:
npm run
测试
我想确保如果第二个命令失败,我的脚本也会失败,所以我将其仅用于测试更改为:
#!/bin/sh
set -e
PLIST_LOCATION="Info.plist"
ENVIRONMENT="DEV"
/usr/libexec/PlistBuddy $PLIST_LOCATION -c "Set :MyEnvironment string $ENVIRONMENT" || \
/usr/libexec/PlistBuddy $PLIST_LOCATION -c "Add :MyEnvironment string $ENVIRONMENT"
但不是
/usr/libexec/PlistBuddy $PLIST_LOCATION -c "Set :TKEnvironment string $ENVIRONMENT" || \
/usr/libexec/PlistBuddy $PLIST_LOCATION -c "Delete :TKEnvironment string $ENVIRONMENT"
命令失败并
Set: Entry, ":MyEnvironment", Does Not Exist
Delete: Entry, ":MyEnvironment", Does Not Exist
问题
为什么它执行第一个命令却又失败了,因为找不到命令?
答案 0 :(得分:3)
如果您看到错误行
./env.sh: line 6: /usr/libexec/PlistBuddy: No such file or directory
您将看到冒号和命令路径的第一个/
之间有多余的空格。这表明外壳程序正在从某个地方拾取一个流浪字符,并且外壳程序试图运行前面带有空格(或其他空格字符)的命令。
如果您运行的是Windows,我怀疑回车符已经潜入文件中,并且与\
行继续之间的交互不良。在macOS下,我猜想通常的Unix换行已被旧的macOS回车代替。我确定此时会有一些有用的编辑器...
无论如何,我建议删除\
并尝试排长一行。如果可行,则表明行尾有问题。
此外,请检查您的编辑器以确保其使用了合理的行尾。