当前位置: 首页 > 知识库问答 >
问题:

在Bash中比较两个字符串时出现“找不到命令”错误

轩辕季同
2023-03-14

我的整个脚本目前是这样的:

#!/bin/sh   
clear;   
blanko="";   
# Dummy-Variablen
variable=Testvariable;   
if [[$variable == $blanko]];
then   
  echo "Nichts da!"   
else   
  echo $variable   
fi

如果我进去了

TestSelect.sh

我得到

/usr/bin/TestSelect.sh: line 6: [[Testvariable: command not found   
Testvariable

我该如何解决这个问题?

共有3个答案

樊宏义
2023-03-14

只需使用#! /bin/bash如果您使用bash脚本,例如:if[[$分区=="/dev/sda2"]];然后比较字符串并使用运行脚本。/scriptname.shbashscriptname.sh

王建华
2023-03-14

在相关注释中,[]周围还需要空格:

if [ "$variable" = "$blanko" ]; then
  # more code here
fi

请注意,变量确实需要在[]中用双引号括起来,以防止分词和全局化。双引号在未设置任何一个被比较的变量时也有帮助——否则shell会抛出语法错误。

查看下面的帖子,了解为什么我们需要[]周围的空格:

  • 为什么在 Bash 中应该在“[”之后和“]”之前有一个空格?

另一篇相关文章讨论了其他也需要空格的语法元素:

  • 为什么元字符周围有时需要空白

最后,本文讨论了[[]][]之间的区别:

  • Bash中单方括号和双方括号的区别

相关:

  • Bash中的“0:未找到命令”
淳于凯
2023-03-14

这是问题:

if [[$variable == $blanko]];

方括号内需要空格,这样使用:

[[ "$variable" == "$blanko" ]] && echo "Nichts da!" || echo "$variable"
 类似资料:
  • 这让我总是虚伪。 我能做什么??我只希望bool在“on”时为True,在“null”时为false

  • 问题内容: 我有一个简单的疑问。如果有人帮助我,那就太好了。 我有两个字符串: 这两个值相等,但是如何在Java中比较它们呢?我们拥有并用于比较字符串alpha值,类似地,如何比较数字值。 问题答案: 这就对了。您可以使用方法将数字字符串转换为整数,该方法将返回类型。然后比较与相同。

  • 问题内容: 我在修复此bash脚本中的错误时遇到问题,我真的不知道我做错了什么,感谢您的任何帮助,谢谢 问题答案: 在 之前和 之后 添加一个空格。

  • 问题内容: 有什么方法可以像下面这样在SQL Server 2008存储过程中比较两个字符串? 如果字符串相同,则返回0 如果根据当前的排序顺序,第一个参数小于第二个参数,则返回-1。 否则返回1。 以上方法我在MySQL中找到,但在SQL Server中找不到。 问题答案: SQL Server中没有直接的字符串比较功能 笔记 您可以使用CREATE FUNCTION等通过UDF进行包装 您可能

  • 在与字符串进行比较时,我们可以使用或 在中,我们知道它检查引用,但在中它检查内容。 假设有两个字符串 字符串s=“SO”;字符串s1=“SO”; 所以在这种情况下,s1==s和s.equals(s1)都将为真。 但在这里它给了我错误 所以我假设比优先级高 所以在这种情况下 它将像(“s1)==s一样被拆分,现在“s1”将是一个新字符串,因此新字符串永远不会等于s,因此其打印错误 我只是想知道我的想

  • 我试着比较两个字符串的字符 String string1=“ABC” 这里举个例子,如果我们一起比较字符串,在索引“1”中的字符串“B”中的索引0中可以找到字符串“A”,所以通过比较字符串,我应该得到一个数字01221,我知道在java中它有,,但我想不出如何实现这一点