В чем разница между операторами "=" и "==" в Bash?
Кажется, что эти два оператора практически одинаковы - есть ли разница? Когда я должен использовать =
и когда ==
?
2 ответа:
вы должны использовать
==
в числовых сравнений в(( ... ))
:$ 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 ")
вы можете использовать либо для сравнения строк в
[[ ... ]]
или[ ... ]
или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
"сравнения строк?- ты говоришь?
$ 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
есть тонкая разница в отношении POSIX. Отрывок из Баш ссылка:
string1 == string2
True, если строки равны.=
может использоваться вместо==
для строгого соответствия POSIX.