2010-07-16 4 views
103

bash에서 동등성과 이중 동등성 테스트 연산자의 차이점은 무엇입니까?bash 문자열 동일성

차이가 없습니다
equal 
equal 
not-equal 
not-equal 

답변

97

, ===의 동의어합니다 (C/C++ 사람들을 위해, 나는 가정을)입니다 :에

[[ "a" = "a" ]] && echo equal || echo not-equal 
[[ "a" == "a" ]] && echo equal || echo not-equal 
[[ "a" = "b" ]] && echo equal || echo not-equal 
[[ "a" == "b" ]] && echo equal || echo not-equal 

결과. 예를 들어 here을 참조하십시오.

당신은 단지로 다시 한 번 확인 할 수 정말 있는지 아니면 그냥 bash source code보고하여 관심이 어딘가에 구문 분석 코드에서해야하지만, 내가 직선을 찾을 수 없습니다합니다.

+19

* string 비교를위한 차이점은 없지만'(())'에서 숫자 비교에'='를 사용할 수 없습니다 ('())'또는'-eq '[]],''test' 또는'[[]]'에서 찾을 수 있습니다. 내 대답을보십시오 [here] (http://stackoverflow.com/questions/2600281/what-is-the-difference-between-operator-and -in-bash/2601583 # 2601583). –

+21

==는 bash에 도입되었지만 bourne shell은 지원하지 않습니다. 일부 시스템에서는/bin/sh가 실제로 bash이고 다른 시스템이라면 bourne입니다. 쉘 스크립트가 여러 시스템에서 제대로 작동했지만 그 중 하나에서 실패했을 때 문제가 발생했습니다 .bone에서 지원되지 않는 이유는 하나가 실패한 이유입니다. – Joe

+4

ksh에서 확인하면주의하십시오. 문법 : 당신은 단일 = 문법으로 감가 상각 경고를받습니다. '경고 : 행 3 :'= '구식, 사용'== '' – brianegge