我在Xcode项目中将此作为Shell脚本目标运行
# shell script goes here
genstrings -u -a -o en.lproj *[hmc] */*[hmc] */*/*[hmc]
if [ -f "$PROJECT_DIR/build/Release-macosx/UnicodeEscape" ] then
build/Release-macosx/UnicodeEscape "en.lproj/Localizable.strings"
elif [ -f "$PROJECT_DIR/build/Debug-macosx/UnicodeEscape" ] then
build/Debug-macosx/UnicodeEscape "en.lproj/Localizable.strings"
fi
exit 0
我收到此错误:
/用户/ AA /升降梭箱/开发人员/ Pandamonia LLC / iPhone / Acey Deucey / build / Acey Deucey.build/Release/GenerateLocalizedStrings.build/Script-00F66869125625D9009F14DA.sh: 第7行:意外附近的语法错误 令牌
elif' /Users/aa/Dropbox/Developer/Pandamonia LLC/iPhone/Acey Deucey/build/Acey Deucey.build/Release/GenerateLocalizedStrings.build/Script-00F66869125625D9009F14DA.sh: line 7:
elif [-f “$ PROJECT_DIR / build / Debug-macosx / UnicodeEscape”]然后'Command / bin / sh失败了 退出代码2
答案 0 :(得分:5)
首先,不要标记它bash
和sh
,你有一个shell,输入echo $SHELL
来知道你使用的是哪个shell,或者在你的开头放一个shebang脚本(#!/usr/bin/env bash
)
在您的命令后添加分号,包括[
... ]
,这是test
的别名。命令终止符是换行符,;
,&&
,||
和&
并且是必需的。您可以在if
和then
之间添加多个命令,因此这些分号是必需的。
if [ -f "$PROJECT_DIR/build/Release-macosx/UnicodeEscape" ] ; then
build/Release-macosx/UnicodeEscape "en.lproj/Localizable.strings" ;
elif [ -f "$PROJECT_DIR/build/Debug-macosx/UnicodeEscape" ] ; then
build/Debug-macosx/UnicodeEscape "en.lproj/Localizable.strings" ;
fi
答案 1 :(得分:4)
then
语句需要在新行上,或与;
的if条件分开。
答案 2 :(得分:3)
您需要在关键字then
之前使用分号。
# shell script goes here
genstrings -u -a -o en.lproj *[hmc] */*[hmc] */*/*[hmc]
if [ -f "$PROJECT_DIR/build/Release-macosx/UnicodeEscape" ]; then
build/Release-macosx/UnicodeEscape "en.lproj/Localizable.strings"
elif [ -f "$PROJECT_DIR/build/Debug-macosx/UnicodeEscape" ]; then
build/Debug-macosx/UnicodeEscape "en.lproj/Localizable.strings"
fi
exit 0
答案 3 :(得分:0)
对我来说,问题是结果不正确,应该是LF
而不是CRLF
。
发生这种情况是因为我在 Windows 。
您可以在 Notepad ++ 中通过以下方式检查:
View
>Show symbol
>Show all characters
并修复:
Edit
>EOL Conversion
>UNIX/OSX Format