在shell脚本中比较两个字符串变量

考虑有一个可变的行和可变的词:

line = 1234 abc xyz 5678
word = 1234

这些变量的值是从2个不同的文件中读取的。

如果它包含该单词,我想打印该行。 我如何使用shell脚本执行此操作? 我尝试了以前提出的所有建议解决方案。 例如,即使该单词不在该行中,也总是通过以下代码。

if [ "$line"==*"$word"*]; then
    echo $line
fi

不需要if语句; 只需使用grep

echo $line | grep "b$wordb"

你可以使用if [[ "$line" == *"$word"* ]]

您还需要使用以下内容来分配变量

line="1234 abc xyz 5678"
word="1234"

工作示例 - http://ideone.com/drLidd


观看白色空间!

当您将变量设置为某个值时,请勿在等号周围放置空格。 当你的值有空格时也使用引号:

line="1234 abc xyz 5678"   # Must have quotation marks
word=1234                  # Quotation marks are optional

当您使用比较时,您必须在括号和比较符号周围留出空白区域:

if [[ $line == *$word* ]]; then
    echo $line
fi

请注意,双方括号。 如果您正在进行模式匹配,则必须使用双方括号而不是单个方括号。 双方括号表示您在使用===时执行模式匹配操作。 如果您使用单个方括号:

if [ "$line" = *"$word"* ]

你在做平等。 请注意,双方括号不需要引号,而在大多数情况下需要单括号。

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

上一篇: Comparison of 2 string variables in shell script

下一篇: String Comparison with wildcards