#!/bin/bash
function getComment(){
local lang=$1;
local theComment=$2;
if [$lang == "Java"] #Surprisingly, an error occurs here: prog.sh: line 6: [Java: command not found
then
echo "//"$theComment; return;
else
echo "Language not found!"; return;
fi
}
getComment "Java" "Whoo!";
exit $?
Ich bin ein Bash-Skript zu schreiben, die eine Variable auf einen Stringliteral vergleicht, und ich bin mit [$lang == "Java"]
(wie oben dargestellt) den Wert von lang
-"Java"
vergleichen . Jedoch erzeugt dieser Vergleich den folgenden Fehler:vergleichen Bash Stringliteral auf eine lokale Variable
stderr:
prog.sh: line 6: [Java: command not found
Ich habe versucht, mit [$lang -eq "Java"]
und ($lang -eq "Java")
als gut, aber diese Aussagen hat nicht funktioniert, und sie erzeugt genau den gleichen Fehler.
Warum tritt dieser Fehler auf, und wie wird eine lokale Variable mit einem Zeichenfolgenliteral verglichen?
Dies ist nicht relevant für Ihre Frage, aber Sie brauchen keine Semikolons am Ende der Zeilen in der Shell. Sie werden nur benötigt, wenn Sie mehr als einen Befehl in eine Zeile schreiben. –
mögliches Duplikat von [bash, Befehl nicht gefunden] (http://stackoverflow.com/questions/16694586/bash-command-not-found) – chepner
Nicht das beste Duplikat, aber es gibt viele Fragen zu Stack Overflow mit der gleichen Antwort : Setzen Sie Leerzeichen um '' '' '' '' '' ' – chepner