bash – 为什么等于运算符不工作,如果它不被空间包围?
发布时间:2020-12-15 19:42:41 所属栏目:安全 来源:网络整理
导读:我尝试了以下脚本 #!/bin/bashvar1="Test 1" var2="Test 2"if [ "$var1"="$var2" ] then echo "Equal" else echo "Not equal"fi 它给了我平等。虽然它应该打印不等于 只有当我插入空间=它按照预期工作 if [ "$var1" = "$var2" ] 并打印不相等 为什么会这样?
我尝试了以下脚本
#!/bin/bash var1="Test 1" var2="Test 2" if [ "$var1"="$var2" ] then echo "Equal" else echo "Not equal" fi 它给了我平等。虽然它应该打印不等于 只有当我插入空间=它按照预期工作 if [ "$var1" = "$var2" ] 并打印不相等 为什么会这样?为什么“$ var1”=“$ var2”与“$ var1”=“$ var2”不同? 此外,当我写了如果[“$ var1”=“$ var2”],它给了 line 4: [: Test 1=: unary operator expected 这是什么意思?它的期待一元操作符怎么样?
test(或[expr])是一个内置函数。像bash中的所有函数一样,您将其参数作为空格分隔的单词传递。
正如bash内置的手册页所示:“每个操作符和操作数必须是一个单独的参数。 这只是bash和大多数其他Unix shell的工作方式。 变量赋值不同。 在bash中,变量赋值具有语法:name = [value]。你不能把没有引用的空格放在=,因为bash不会将它解释为你打算的作业。 bash将大多数单词列表视为具有参数的命令。 例如。 # call the command or function 'abc' with '=def' as argument abc =def # call 'def' with the variable 'abc' set to the empty string abc= def # call 'ghi' with 'abc' set to 'def' abc=def ghi # set 'abc' to 'def ghi' abc="def ghi" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |