Comparison of 2 string variables in shell script

Consider there is a variable line and variable word:

line = 1234 abc xyz 5678
word = 1234

The value of these variables are read from 2 different files.

I want to print the line if it contains the word. How do I do this using shell script? I tried all the suggested solutions given in previous questions. For example, the following code always passed even if the word was not in the line.

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

No need for an if statement; just use grep :

echo $line | grep "b$wordb"

You can use if [[ "$line" == *"$word"* ]]

Also you need to use the following to assign variables

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

Working example -- http://ideone.com/drLidd


Watch the white spaces!

When you set a variable to a value, don't put white spaces around the equal sign. Also use quotes when your value has spaced in it:

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

When you use comparisons, you must leave white space around the brackets and the comparison sign:

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

Note that double square brackets. If you are doing pattern matching, you must use the double square brackets and not the single square brackets. The double square brackets mean you're doing a pattern match operation when you use == or = . If you use single square brackets:

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

You're doing equality. Note that double square brackets don't need quotation marks while single brackets it is required in most situations.

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

上一篇: 在bash中检查if语句中的两个条件

下一篇: 在shell脚本中比较两个字符串变量