Linux shell编程string比较语法

在Linux shell编程中比较string===什么区别?

也许下面的代码工作:

 if [ "$NAME" = "user" ] then echo "your name is user" fi 

但我认为这不是一个正确的语法。 它将被用来比较string==语句。

什么是正确的?

Solutions Collecting From Web of "Linux shell编程string比较语法"

这些页面解释了bash中的各种比较运算符:

在第二个链接页面上,您会发现:

 == is equal to if [ "$a" == "$b" ] This is a synonym for =. 

单等于是正确的

string1 == string2

string1 = string2

如果字符串相等,则为真。 '='应与POSIX一致性测试命令一起使用

 NAME="rafael" USER="rafael" if [ "$NAME" = "$USER" ]; then echo "Hello" fi 

通常,在比较字符串时,=运算符与==相同。

注:==比较运算符在双括号测试中的行为与单个括号内的不同。

 [[ $a == z* ]] # True if $a starts with an "z" (pattern matching). [[ $a == "z*" ]] # True if $a is equal to z* (literal matching). [ $a == z* ] # File globbing and word splitting take place. [ "$a" == "z*" ] # True if $a is equal to z* (literal matching). 

来源: http : //tldp.org/LDP/abs/html/comparison-ops.html

你可以看看这里或这里 。 就个人而言,比较字符串,我用case

 case "$string1" in "$string2" ) echo "matched";; *) echo "not matched";; esac 

我不必知道我应该使用哪个操作员