在bash中进行字符串比较。 [[: 未找到

我正在比较bash中的字符串。 我已经找到了关于如何在stackoverflow上做的答案。 在我尝试的脚本中,我使用了Adam在提到的问题中提交的代码:

#!/bin/bash
string='My string';

if [[ "$string" == *My* ]]
then
  echo "It's there!";
fi

needle='y s'
if [[ "$string" == *"$needle"* ]]; then
  echo "haystack '$string' contains needle '$needle'"
fi

我也尝试了从第二篇文章中可以找到的ubuntuforums的方法

if [[ $var =~ regexp ]]; then
  #do something
fi

在这两种情况下,我收到错误:

[[: not found

我究竟做错了什么?


[[是bash-builtin。] 你的/bin/bash似乎不是真正的bash。


你如何运行你的脚本? 如果你这样做

$ sh myscript

你应该试试:

$ bash myscript

或者,如果脚本是可执行的:

$ ./myscript

sh和bash是两个不同的壳。 在第一种情况下,您将脚本作为参数传递给sh解释器,而在第二种情况下,您将在第一行中决定使用哪个解释器。


是脚本中的第一行:

#!/bin/bash

要么

#!/bin/sh

sh shell产生这个错误信息,而不是bash

链接地址: http://www.djcxy.com/p/36195.html

上一篇: String comparison in bash. [[: not found

下一篇: How to test if string exists in file with Bash?