Undgå "integer expression expected" fejl i shell script: Sammenlign strenge korrekt

Hvordan kan if-segmentet i en shell script evalueres/sammenlignes med en strenginput i stedet for et heltal, for at undgå fejlen "integer expression expected"?

For at undgå fejlen "integer expression expected" i et shell script, når du sammenligner en streng i stedet for et heltal, kan du bruge dobbelt lighedstegn (==), enkelt lighedstegn (=) med enkeltstående klammer, dobbelt klammer ([[ ]]), eller en case statement.

Hvordan kan if-segmentet i en shell script evalueres/sammenlignes med en strenginput i stedet for et heltal, for at undgå fejlen "integer expression expected"?

For at undgå fejlen "integer expression expected" i et shell script, når du sammenligner en streng i stedet for et heltal, kan du bruge følgende metoder:

  • Brug dobbelt lighedstegn (==) i stedet for enkelt lighedstegn (=):
    if [ "$str" == "some_string" ]; then
      echo "Strings are equal"
    fi
  • Brug enkelt lighedstegn (=) med enkeltstående klammer:
    if [ "$str" = "some_string" ]; then
      echo "Strings are equal"
    fi
  • Brug dobbelt klammer ([[ ]]):
    if [[ "$str" == "some_string" ]]; then
      echo "Strings are equal"
    fi
  • Brug case statement:
    case "$str" in
      "some_string")
        echo "Strings are equal"
        ;;
      *)
        echo "Strings are not equal"
        ;;
    esac

Ved at bruge disse metoder kan du undgå fejlen "integer expression expected" og korrekt sammenligne strenge i dine shell scripts.