В чем разница между операторами "=" и "==" в 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.