使用 Bourne Shell (sh) 在句子中查找单词

use*_*865 4 shell string shell-script regular-expression

我正在尝试使用 Bourne Shell (sh) 确定某个特定单词是否出现在句子中。例如:

#!/bin/bash
INPUT='Lorem ipsum dolor sit amet.'

if [[ "$INPUT" == *dolor* ]]
then
    echo "So true"
else
    echo "Not true"
fi
Run Code Online (Sandbox Code Playgroud)

这适用于bash,但我不能使用bash,我需要一些适用于sh

Sté*_*las 5

我怀疑你的意思是 POSIX shell 语法而不是 Bourne shell,因为如今 Bourne shell 正在成为一种非常罕见的恐龙。

无论如何,这两种情况的答案都是一样的:

case $INPUT in
  *dolor*) echo true;;
  *) echo false;;
esac
Run Code Online (Sandbox Code Playgroud)

最后一个;;beforeesac不是必需的。POSIX 语法还允许(*dolor*).

  • 不,这是一种罕见的情况,您不需要引用 $INPUT(那里不能进行分词或文件名生成),但引用它没有坏处。 (2认同)