# 39, & # 39 에 if& 두 문자열 변수를 비교하십시오 어떻게 합니까. 기술서임을 bash?

39 m trying to get to work in ',' 기술서임을 i& 있는 경우 [Bash] [1] (using [unbuntu] [2]).

#!/bin/bash

s1="hi"
s2="hi"

if ["$s1" == "$s2"]
then
  echo match
fi

39 를 사용하여 다양한 형태의 경우, ve i& 했다 ',' 문 ' [[&quot $ s1"; = $ s2&quot ";]] '와' = ',', '=' 와 '작은 따옴표 제외) 을 사용하여 eq 그래도 내려받습니다 정보정의다음 오류:

&gt. [아아아안녀어엉: 명령을 찾을 수 없습니다.

39, ve i& 및 복사됨 하지만, 이러한 다양한 사이트 및 자습서는 바라볼 doesn& # 39 t 작동합니까 - 내가 뭘 그래?

결국 '$ s1, s2' 가 '$ 경우, I want to 말하도다 미확인범은 어떻게 할 수 있지?'

내가 그냥 작동합니까 아웃해야 스페이스 비트. :/ Map_layer 말하도다 어떻게 합니까?

찾았다

if [[ "$s1" == "*$s2*" ]]

하지만 didn& # 39, 빗나갔다.

[1]: http://en.wikipedia.org/wiki/Bash_% 28Unixshell% 29 [2]: http://en.wikipedia.org/wiki/Ubuntu% 28operating_system% 29

질문에 대한 의견 (1)
해결책

문자열 비교 사용합니다.

if [ "$s1" == "$s2" ]

'A' 가 'b' 를 사용합니다.

if [[ $s1 == *"$s2"* ]]

(추가 및 smartupdate 사이에 공백을 심볼에는):

나쁜:

if ["$s1" == "$s2"]

좋은:

if [ "$s1" == "$s2" ]
해설 (7)

필요한 공간:

if [ "$s1" == "$s2" ]
해설 (4)

사이의 간격을 두고 예증으로 않도록 주의해야 합니다. [& # 39, & # 39 그리고 있는 이 가변적입니다 큰따옴표 포함되어 있습니다.

if [ "$s1" == "$s2" ]; then
#   ^     ^  ^     ^
   echo match
fi

이 '의 공백을 보이기 남겨둘 필요가 있습니다. ^

해설 (3)

내가 이 번호요 제안하세요.

if [ "$a" = "$b" ]

/ 닫기와 브래킷에 사이의 공백을 디이브이 열리는 이 & # 39 와 변수 = & # 39, 또한 공백이 랩할. 사인이야.

또한 주의해야 너회의 스크립트입니다 헤더입니다. # 39 의 차이점 작성하든지 it& 사용합니다.

#!/bin/bash

또는

#!/bin/sh

Here& # 39 의 소스.

해설 (4)

꼭 이래야겠어요 제안하세요:

#!/bin/bash

s1="hi"
s2="hi"

if [ $s1 = $s2 ]
then
  echo match
fi

큰따옴표 없이 하나만 와 같음.

해설 (3)

Bash4+ 참조용이므로. 참고: 공백은 사용할 때 문제가 생길 수 없는 말을 인용 부호를 사용하는 상술합니다. 항상 쿼트에 bash 작용하게 된다.

Bash4+ 예제는 다음과 같습니다.

39, & # 39 example1 확인할지 yes&;; 끈 (대소문자 무시):

if [[ "${str,,}" == *"yes"* ]] ;then

39, & # 39 yes& 확인할지 예 2. 끈 (대소문자 무시):

if [[ "$(echo "$str" | tr '[:upper:]' '[:lower:]')" == *"yes"* ]] ;then

39, & # 39, yes& 확인할지 예 3, 끈 (대소문자 구분):

 if [[ "${str}" == *"yes"* ]] ;then

39, & # 39 uxfs 4, 확인할지 yes&. 끈 (대소문자 구분):

 if [[ "${str}" =~ "yes" ]] ;then

정확히 일치하는 예 5, (대소문자 구분):

 if [[ "${str}" == "yes" ]] ;then

정확히 일치하는 예 6, (대소문자 무시):

 if [[ "${str,,}" == "yes" ]] ;then

예, 정확한 7 일치:

 if [ "$a" = "$b" ] ;then
해설 (1)

그런데 여기서 이 질문에 답을 이미 큰 혼란이 있을 것으로 보인다) 의 사이에 약간의 사용하여 단일 비유하 및 더블 같음

if [ "$s1" == "$s2" ]

차이점은 있는 스크립팅 언어를 사용하고 있다. Bash #! / bin / bash 등이 사용하는 경우 '다음' 에 '로 시작하는 스크립트입니다 및 먹이좀 스크립트입니다 피렌마트베이시'. '-' = '다음' 를 사용하여 bash 피렌마트베이시 실행하십시오 사용해야 합니다.

    • ! / Bin / sh 를 사용하는 경우 'sh' 와 같이 사용할 먹이좀 스크립트입니다 'filename.sh'. (Filename.sh) 를 사용하여 'sh' - '=' 단일 실행 후 사용해야 합니다. 저들이요 혼용 마십시오.

해설 (6)
$ if [ "$s1" == "$s2" ]; then echo match; fi
match
$ test "s1" = "s2" ;echo match
match
$
해설 (1)

난 지금 리눅스 박스형 don& # 39, t 이용할 수 있지만, [실제로 프로그램 (및 bash 내장), 그런 만큼 사이의 간격을 두고 봐야 합니다. [및 첫 번째 매개변수입니다.

또한 문자열이어야 단일 = 항등 연산자 것 같습니다.

해설 (1)

이건 더 이상 대한 답변! 예, 클루 () 은 오류 메시지:

&gt. [아아아안녀어엉: 명령을 찾을 수 없습니다.

해당 &quot 보여 주는 hi"; 그동안 연결된 다운스트림에서 " [".

보다 일반적인 프로그래밍 언어와 달리, bash, " [&quot. 마찬가지로,) 는 명령을 더 명백하네 &quot ls&quot. # 39 의 대접을 받지 못하고 해서 특별히 it& it& 상술합니다. - # 39 의 심볼에는 &quot, 즉, [&quot. (대체) 와 $ s1&quot "; 바로 옆에 있는 이 질문에 서로 참여됨 (있는 그대로 올바른 Bash) 는 명령 및 그 후 해당 위치에 찾으려고 합니다. [아아아안녀어엉 - 원하는거요 알 수 없는 내주었다.

C 언어 및 기타 일부 언어, 이 " [&quot. 다른 &quot, 문자 class&quot 약간만이라도 역할을 한 것으로 보인다. 다음 중 hi&quot 및 약간만이라도 분리형 ";).

이에 따라 개방 이후 &quot 공간이 필요합니다. [".

해설 (0)

하지만, 정말 순수한 배시 'test' 에 포함된 버전으로 없이 추악한 시도하시겠습니까:

if ( exit "${s1/*$s2*/0}" )2>/dev/null
then
   echo match
fi

설명: ' ()' 의 추가 서브셸 열려 있습니다. It if there was a 매치 종료하므로 0 인 경우, 정보기술 (it) 기업 공개를 일치시킵니다 오류가 있는 것을 함께 종료됩니다. $ s1 없었다 (ugly). / Dev / null 로 전달됩니까 오류: '이'.

해설 (2)
#!/bin/bash

s1="hi"
s2="hi"

if [ "x$s1" == "x$s2" ]
then
  echo match
fi

추가 구체화하십시오 δ1 양상은 금고에도요

다른 표기 한 줄로 명령을 사용할 수도 있습니다.

[ "x$s1" == "x$s2" ] && echo match
해설 (2)