如何解决shell错误
我有这样的运行作为一个Shell脚本目标在我的Xcode项目“附近意外的标记‘elif的’语法错误”如何解决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
我得到这个错误:
/Users/aa/Dropbox/Developer/Pandamonia LLC/iPhone/Acey Deucey/build/Acey Deucey.build/Release/GenerateLocalizedStrings.build/Script-00F66869125625D9009F14DA.sh: line 7: syntax error near unexpected token
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" ] then' Command /bin/sh failed with exit code 2
首先,不要将其标记为bash
和sh
,你有一个外壳,类型echo $SHELL
知道哪个壳您使用,或把家当在脚本的开始(#!/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
的then
声明必须在一个新行,或如果条件与;
分开。
在关键字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
对我来说,这个问题竟然是不正确的行结束这应该是LF
,而不是CRLF
。
发生这种情况是因为我从Windows开始工作。
您可以通过在记事本++检查:
View
>Show symbol
>Show all characters
和修复:
Edit
>EOL Conversion
>UNIX/OSX Format
的','在声明的结尾是无用的空语句。 – Jens 2012-05-08 10:18:41
@Jens:除非你不换线。 – Benoit 2012-05-08 13:58:50
我不明白你想说什么。你能改说吗? – Jens 2012-05-08 14:04:05