通过 || 回退命令抛出 "No such file or directory"
fallback command via || throws "No such file or directory"
我正在尝试使用 PlistBuddy 在我的 Mac 上执行更新或插入。
脚本
我编写了以下脚本:
#!/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"
测试
我想确保,如果第二个命令失败,我的脚本也会失败,所以我将它 just for test 更改为:
/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
问题
为什么执行了第一个命令,然后就失败了,因为找不到命令?
如果你看错误行
./env.sh: line 6: /usr/libexec/PlistBuddy: No such file or directory
您会看到在冒号和命令路径的第一个 /
之间有一个额外的 space。这表明 shell 正在从某个地方拾取一个杂散字符,并且 shell 正在尝试 运行 带有 space (或其他一些白色 space字符)在前面。
如果你是 运行宁 Windows,我怀疑回车-return 字符已经潜入文件并与 \
交互不良线路延续。在 macOS 下,我猜通常的 Unix 换行符已被旧 macOS 的回车符所取代 return。我相信一些有用的编辑会在此时加入...
无论如何,我建议删除 \
并尝试使用长行。如果可行,则表明存在行尾问题。
此外,请检查您的编辑器以确保它使用合理的行结尾。
我正在尝试使用 PlistBuddy 在我的 Mac 上执行更新或插入。
脚本
我编写了以下脚本:
#!/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"
测试
我想确保,如果第二个命令失败,我的脚本也会失败,所以我将它 just for test 更改为:
/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
问题
为什么执行了第一个命令,然后就失败了,因为找不到命令?
如果你看错误行
./env.sh: line 6: /usr/libexec/PlistBuddy: No such file or directory
您会看到在冒号和命令路径的第一个 /
之间有一个额外的 space。这表明 shell 正在从某个地方拾取一个杂散字符,并且 shell 正在尝试 运行 带有 space (或其他一些白色 space字符)在前面。
如果你是 运行宁 Windows,我怀疑回车-return 字符已经潜入文件并与 \
交互不良线路延续。在 macOS 下,我猜通常的 Unix 换行符已被旧 macOS 的回车符所取代 return。我相信一些有用的编辑会在此时加入...
无论如何,我建议删除 \
并尝试使用长行。如果可行,则表明存在行尾问题。
此外,请检查您的编辑器以确保它使用合理的行结尾。