
다음은 제가 혼란스러워하는 더 큰 코드 조각의 간단한 줄입니다.
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