2014-12-18 1 views

답변

4

그런 식으로 작동하는 방법은 [[ ]]입니다.

연산자 '=='및 '! ='연산자를 사용하면 연산자 오른쪽의 문자열이 패턴으로 간주되어 아래의 패턴 일치에서 설명하는 규칙에 따라 일치합니다.

+0

이것을 올바르게 표시 할 것입니다 -하지만이 동작은 기이하고 거기에 대한 논리는 없습니다. . – user3467349

2

글롭 패턴은

if [[ *"My long"* == $string ]]; then echo "It's there!"; fi 

이 실패 이유 비교 오른쪽에서 작동합니다.

[[ *"My long"* == "My long" ]] && echo "It's there!" 

을하지만이 작동합니다 :

에도이 작동하지 않습니다

[[ "My long" == *"My long"* ]] && echo "It's there!" 
It's there! 

이 작동하는 방법을 요구하는 경우 그 다음

string='My long string'; 
if [[ $string == *"My long"* ]]; then echo "It's there!"; fi 

glob의 사용으로 인해 작동 중입니다. 귀하의 RHS 패턴 일치가 *

글자 그대로의 글자 "My long" 전후에 일치하고 입력에 "My long"이 포함되어있어 일치가 성공 했으므로 의미가 같습니다.

+2

네, 그 부분이 있지만이 마법의 논리는 무엇입니까? – user3467349

+0

죄송합니다 무슨 마법을 설명해 주시겠습니까? – anubhava

+0

'=='연산자의'right'와'left' 부분이 일치하지 않는 부분으로, 정상적인 논리를 무시합니다. – user3467349

관련 문제