如何修复shell错误"意外令牌附近的语法错误'elif'"

Ale*_*ers 2 shell

我在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
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

/ Users/aa/Dropbox/Developer/Pandamonia LLC/iPhone/Acey Deucey/build/Acey Deucey.build/Release/GenerateLocalizedStrings.build/Script-00F66869125625D9009F14DA.sh:line 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"]然后'命令/ bin/sh失败,退出代码2

Ben*_*oit 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
Run Code Online (Sandbox Code Playgroud)