#!/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 $?
Я пишу скрипт Bash, который сравнивает переменную строкового литерала, и я использую [$lang == "Java"]
(как показано выше), чтобы сравнить значение lang
к "Java"
, Тем не менее, это сравнение дает следующее сообщение об ошибке:Сравните Баш строковый литерал локальной переменной
stderr:
prog.sh: line 6: [Java: command not found
Я попытался с помощью [$lang -eq "Java"]
и ($lang -eq "Java")
, а также, но эти заявления не работают либо, и они получают точно такую же ошибку.
Почему возникает эта ошибка, и каков правильный способ сравнения локальной переменной с строковым литералом?
Это не относится к вашему вопросу, но вам не нужны точки с запятой в конце строк в оболочке. Они нужны только в том случае, если вы помещаете несколько команд в одну строку. –
Возможный дубликат [bash, command not found] (http://stackoverflow.com/questions/16694586/bash-command-not-found) – chepner
Не лучший дубликат, но есть много вопросов о переполнении стека с тем же ответом : помещает пробелы в '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' – chepner