#!/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 $?
Sto scrivendo uno script Bash che confronta una variabile ad una stringa letterale, e sto usando [$lang == "Java"]
(come mostrato sopra) per confrontare il valore di lang
-"Java"
. Tuttavia, questo confronto produce il seguente errore:confrontare una stringa Bash letterale una variabile locale
stderr:
prog.sh: line 6: [Java: command not found
Ho provato con [$lang -eq "Java"]
e ($lang -eq "Java")
pure, ma queste dichiarazioni non funzionavano, e hanno prodotto esattamente lo stesso errore.
Perché si verifica questo errore e qual è il modo corretto per confrontare una variabile locale con una stringa letterale?
Questo non è rilevante per la domanda, ma non è necessario il punto e virgola alla fine delle righe nella shell. Sono necessari solo se si mettono più di un comando su una singola riga. –
possibile duplicato di [bash, comando non trovato] (http://stackoverflow.com/questions/16694586/bash-command-not-found) – chepner
Non è il duplicato migliore, ma ci sono molte domande su Stack Overflow con la stessa risposta : posiziona degli spazi attorno a '[' e ']' di un comando 'test'. – chepner