我正试图在我的Mac上使用PlistBuddy执行一个更新或插入。
脚本
我写了以下脚本:
#!/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命令将失败。
Set: Entry, ":MyEnvironment", Does Not Exist
./env.sh: line 6: /usr/libexec/PlistBuddy: No such file or directory问题
为什么它执行第一个命令,但又失败了,因为它找不到命令?
发布于 2018-07-18 12:32:42
如果您查看错误行
./env.sh: line 6: /usr/libexec/PlistBuddy: No such file or directory您将看到在冒号和命令路径的第一个/之间有一个额外的空间。这表明shell从某个地方接收到一个偏离字符,shell试图运行一个命令,前面有空格(或其他空格字符)。
如果您运行的是Windows,我会怀疑有一个回车字符潜入文件中,并且正在与\行继续进行糟糕的交互。在macOS下,我猜想通常的已经被旧的macOS回车取代了。我相信某位有帮助的编辑会在这一点上介入.
无论如何,我建议删除\并尝试一条长线。如果这有效的话,就意味着线尾问题。
此外,检查您的编辑器,以确保它正在使用合理的行尾。
https://stackoverflow.com/questions/51401578
复制相似问题