Linux shell programming string compare syntax

后端 未结 4 1297
南方客
南方客 2021-02-12 19:07

What is the difference between = and == to compare strings in Linux shell programming?

Maybe the following code works:

if [ \"$         


        
相关标签:
4条回答
  • 2021-02-12 19:25

    The single equal is correct

    string1 == string2

    string1 = string2

    True if the strings are equal. ‘=’ should be used with the test command for POSIX conformance

    NAME="rafael"
    USER="rafael"
    if [ "$NAME" = "$USER" ]; then
        echo "Hello"
    fi
    
    0 讨论(0)
  • 2021-02-12 19:31

    These pages explain the various comparison operators in bash:

    • http://www.tech-recipes.com/rx/209/bournebash-shell-scripts-string-comparison/
    • http://tldp.org/LDP/abs/html/comparison-ops.html
    • http://www.faqs.org/docs/Linux-HOWTO/Bash-Prog-Intro-HOWTO.html#ss11.2

    On the second linked page, you will find:

    ==
    
        is equal to
    
        if [ "$a" == "$b" ]
    
        This is a synonym for =.
    
    0 讨论(0)
  • 2021-02-12 19:39

    In general, the = operator works the same as == when comparing strings.

    Note: The == comparison operator behaves differently within a double-brackets test than within single brackets.

    [[ $a == z* ]]   # True if $a starts with an "z" (pattern matching).
    [[ $a == "z*" ]] # True if $a is equal to z* (literal matching).
    
    [ $a == z* ]     # File globbing and word splitting take place.
    [ "$a" == "z*" ] # True if $a is equal to z* (literal matching).
    

    source: http://tldp.org/LDP/abs/html/comparison-ops.html

    0 讨论(0)
  • 2021-02-12 19:45

    you can take a look here or here. Personally, to compare strings, I use case

    case "$string1" in
      "$string2" ) echo "matched";;
      *) echo "not matched";;
    esac
    

    I do not have to know which operator i should use

    0 讨论(0)
提交回复
热议问题