Wygląda na to, że ci dwaj operatorzy są prawie tacy sami - czy istnieje różnica? Kiedy należy użyć =
i kiedy ==
?Jaka jest różnica między operatorem "=" i "==" w Bash?
Odpowiedz
Musisz użyć ==
porównań numerycznych w ((...))
:
$ if ((3 == 3)); then echo "yes"; fi
yes
$ if ((3 = 3)); then echo "yes"; fi
bash: ((: 3 = 3 : attempted assignment to non-variable (error token is "= 3 ")
można używać zarówno do porównań łańcuchowych w [[ ... ]]
lub [ ... ]
lub test
:
$ if [[ 3 == 3 ]]; then echo "yes"; fi
yes
$ if [[ 3 = 3 ]]; then echo "yes"; fi
yes
$ if [ 3 == 3 ]; then echo "yes"; fi
yes
$ if [ 3 = 3 ]; then echo "yes"; fi
yes
$ if test 3 == 3; then echo "yes"; fi
yes
$ if test 3 = 3; then echo "yes"; fi
yes
"porównań ciąg?" mówisz?
$ if [[ 10 < 2 ]]; then echo "yes"; fi # string comparison
yes
$ if ((10 < 2)); then echo "yes"; else echo "no"; fi # numeric comparison
no
$ if [[ 10 -lt 2 ]]; then echo "yes"; else echo "no"; fi # numeric comparison
no
Istnieje subtelna różnica w odniesieniu do POSIX. Wyciąg z Bash reference:
string1 == string2
Prawda, jeśli słowa są równe.=
może być używany zamiast==
, aby zachować zgodność z wymaganiami POSIX.
Nie ma różnicy w bashach? Tylko kwestia przenośności? –
@ T.E.D .: Nie, zobacz moją odpowiedź. –
- 1. Jaka jest różnica między operatorem * i operatorem w programie c?
- 2. jaka jest różnica między operatorem kropki a operatorem rozdzielczości zakresu
- 3. Jaka jest różnica między operatorem Java equals() i C++ ==?
- 4. Jaka jest różnica między operatorem zwarć Perla (lub, i) a (||, &&)?
- 5. Jaka jest różnica między operatorem "+" w ggplot2 i operatorem "%>%" w magrittr?
- 6. W tensorflow jaka jest różnica między tf.add a operatorem (+)?
- 7. Jaka jest różnica między isEqualToString a operatorem == w Objective C?
- 8. Jaka jest różnica między klawiszami backticks i $() w skrypcie Bash?
- 9. Jaka jest różnica między `-Contains` i` -In` w PowerShell?
- 10. Jaka jest różnica między? : i ||
- 11. Jaka jest różnica między $ i $$?
- 12. Jaka jest różnica między "||" operator i funkcja concat w Oracle?
- 13. Różnica między operatorem globalnym a operatorem członkowskim
- 14. Jaka jest różnica między = i: = w mysql?
- 15. Jaka jest różnica między! = I =! w Javie?
- 16. Jaka jest różnica między 'i "w PHP
- 17. Jaka jest różnica między! i !! w yaml?
- 18. jaka jest różnica między @ i @@ w module?
- 19. Jaka jest różnica między * i. * W Matlab?
- 20. Jaka jest różnica między | i || w MATLAB?
- 21. Jaka jest różnica między * i * | * w CSS?
- 22. Jaka jest różnica między jawnym obciążeniem/magazynem a zwykłym operatorem = a operatorem T?
- 23. Różnica między "podczas" i "do" w Bash
- 24. Jaka jest różnica między operatorem >>> w Javie i JavaScript?
- 25. Jaka jest różnica między operatorem publikowania i multiemisji w programie rxjs 5?
- 26. Jaka jest różnica między System.Windows.Controls.Control i System.Windows.Forms.Control?
- 27. Jaka jest różnica między asersem i static_assert?
- 28. Jaka jest różnica między PropertyChangeListener i VetoableChangeListener?
- 29. Jaka jest różnica między Ja i Ja?
- 30. Jaka jest różnica w wyrażeniach -r` i `readonly` w bash?
Nie powinieneś używać '==' z '[' lub 'test', chociaż. '==' nie jest częścią specyfikacji POSIX i nie będzie działać ze wszystkimi powłokami (w szczególności 'dash' nie rozpoznaje go). – chepner
@chepner: To prawda, ale pytanie dotyczy właśnie Bash. –