#!/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")
,但这些语句也不起作用,并且它们产生完全相同的错误。
为什么会出现此错误,以及将局部变量与字符串文字进行比较的正确方法是什么?
答案 0 :(得分:27)
您需要[
和]
周围的空格:
if [ "$lang" = "Java" ]
[
是一个命令(它是test
的同义词),和任何其他命令一样,用空格分隔参数。
如果值为空或包含空格或通配符,您还应该将变量放在双引号中。
最后,执行字符串比较的运算符为=
,但某些版本的test
允许==
作为扩展名。
答案 1 :(得分:3)
首先,您必须将变量括在双引号之间,因为变量可能有一些空格或特殊字符。
最后请记住“[”它本身就是一个可执行文件(通常在/ bin中)。
if [ "$lang" == "Java" ]; then
答案 2 :(得分:1)