if [ $string1 = $string2 -a $string3 = $string4 ]; then
结果[:参数过多。 如何解决此错误?
答案 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”。
希望有帮助。