将Bash字符串文字与局部变量进行比较

And*_*een 15 bash

#!/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 $?
Run Code Online (Sandbox Code Playgroud)

我正在写一个变量进行比较,以一个字符串一击脚本,我使用的[$lang == "Java"](如上所示)比较的值lang"Java".但是,此比较会产生以下错误:

stderr:
prog.sh: line 6: [Java: command not found
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用[$lang -eq "Java"],并($lang -eq "Java")为好,但这些声明没有任何工作,而他们生产的一模一样的错误.

为什么会出现此错误,以及将局部变量与字符串文字进行比较的正确方法是什么?

Bar*_*mar 27

你需要周围的空间[]:

    if [ "$lang" = "Java" ]
Run Code Online (Sandbox Code Playgroud)

[是一个命令(它是它的同义词test),和任何其他命令一样,用空格分隔参数.

如果值为空或包含空格或通配符,则还应将变量放在双引号中.

最后,运算符执行字符串比较=,虽然某些版本的testallow ==作为扩展名.