如何在Shell脚本中使用AND运算符进行字符串相等

时间:2018-09-25 00:03:50

标签: bash shell

if [ $string1 = $string2 -a $string3 = $string4 ]; then 

结果[:参数过多。 如何解决此错误?

2 个答案:

答案 0 :(得分:1)

在使用单括号测试const item = [25,4]; const array = [item]; console.log(array.includes(item)); // true 时,应在测试括号中的变量名前后加上引号。否则Bash会在任何空格上破坏字符串。

使用:

[ .. ]

如果您不引用变量:

$ s1="one two"
$ s2="one two"

但是,如果您引用-一切都很好:

$ [ $s1 = $s2 ]; echo $?
-bash: [: too many arguments

({$ [ "$s1" = "$s2" ]; echo $? 0 的意思是0

您还可以使用Bash True两括号测试,而不使用[[ ... ]] SOMTIMES

"quotes"

对于“和”部分,您可以在$ [[ $s1 == $s2 ]]; echo $? 0 方括号的内部或外部使用&&

[[ ... ]]

但实际上-最好一直引用。

请参见this帖子。

答案 1 :(得分:0)

或者严格来说是Bash / Ksh

#!/bin/bash

s1="one two"
s2="one two"
s3="three four"
s4="three four"


if [[ $s1 == $s2 && $s3 == $s4 ]]; then
        echo "All equals"
else
        echo "Some differences"
fi

在[[]]内,通常不会拆分单词,因此无需引用。而且,对于AND而言,通常通常首选“ &&”而不是“ -a”。

希望有帮助。