Sida 1 av 1

Problem med ett .sh-script för kunds räkning!

Postat: 19 mar 2012, 20:03
av Kirill
Godkväll allés...
root@GIBSON:/var/www/OCS/oct-crypto/bin# ./launcher.sh
./launcher.sh: line 4: syntax error near unexpected token `elif'
'/launcher.sh: line 4: `elif [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
root@GIBSON:/var/www/OCS/oct-crypto/bin# sh ./launcher.sh
./launcher.sh: 4: Syntax error: "elif" unexpected (expecting "then")
root@GIBSON:/var/www/OCS/oct-crypto/bin# sh ./launcher.sh
./launcher.sh: 4: Syntax error: "elif" unexpected (expecting "then")
Scriptet ser ut såhär:
if type -p java; then
echo Found java executable in PATH...
_java=java
elif [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
echo Found java executable in JAVA_HOME.
_java="$JAVA_HOME/bin/java"
else
echo "No java found. Please install it and try again!"
exit 1
fi

if [[ "$_java" ]]; then
echo This is good. Starting the Offline Tool...
$_java -jar ./../lib/oct-offline-1.0.0.jar
fi
Hälsningar
Pontus

Re: Problem med ett .sh-script för kunds räkning!

Postat: 19 mar 2012, 21:40
av David Andersson
Det är troligen Windows/DOS-radslut i filen (CR+LF). Ändra till Unix-radslut (LF). Kanske finns dos2unix eller flip installerat, annars kan man göra perl -pi~ 's/\r\n/\n/g' launcher.sh

(Först tänkte jag att utan shebang kanske den startar sh i stället för bash, och då funkar inte [[...]], utan ska vara [...]. Lägg till shebang eller ändra till [...] för säkerhets skull.)