싱글과 더블은 둘 다 다르게 행동하는 것과 같습니다

싱글과 더블은 둘 다 다르게 행동하는 것과 같습니다

다음은 제가 혼란스러워하는 더 큰 코드 조각의 간단한 줄입니다.

if [ $some_line == "text" ]
then

그런 다음 작업 중이던 다른 프로그램에 동일한 코드를 사용했지만 "=="를 "="로 변경하지 않으면 코드가 작동하지 않았습니다. 나는 여기에서 두 가지 모두 동일한 방식으로 작동하므로 단일 또는 이중 등호를 사용하는 것이 중요하지 않다는 것을 제안하는 몇 가지 스레드를 살펴보았습니다.

if [ $some_line = "text" ]
then

따라서 첫 번째 코드 조각은 server1에서는 작동하지만 "단일 같음"으로 변경하지 않는 한 server2에서는 작동하지 않습니다. 두 서버 모두 정확히 동일한 환경을 가지고 있습니다.

누구든지 설명할 수 있나요? 감사해요!

편집 - 매번 "bash myscript.sh"로 스크립트를 실행하고 있습니다.

답변1

==과 의 내부 테스트는 =동일합니다 .[ ]bash

==에서는 작동하지 않습니다 sh.=

동일한 쉘을 사용하여 두 스크립트를 모두 실행하고 있습니까?

예:

$ cat test1
#!/bin/bash
if [ "a" == "a" ];then echo match;fi
$ ./test1
match
$ cat test2
#!/bin/bash
if [ "a" = "a" ];then echo match;fi
$ ./test2
match
$ cat test3
#!/bin/sh
if [ "a" = "a" ];then echo match;fi
$ ./test3
match
$ cat test4
#!/bin/sh
if [ "a" == "a" ];then echo match;fi
$ ./test4
./test4: 2  [: a: unexpected operator

관련 정보