공백으로 구분된 여러 값을 포함하는 변수의 각 값을 비교합니다.

공백으로 구분된 여러 값을 포함하는 변수의 각 값을 비교합니다.

정상적인 상황

wolf@linux:~$ x='10'
wolf@linux:~$ if [[ "$x" -eq 10 ]]; then echo True; else echo False; fi
True
wolf@linux:~$ 

y내 질문은 이와 같은 2개의 값이 있다고 가정하는 것입니다.

wolf@linux:~$ y=' 10
>   10'
wolf@linux:~$ 

숫자가 같은지 확인하는 방법은 무엇 y입니까 10?

wolf@linux:~$ if [[ "$y" -eq 10 ]]; then echo True; else echo False; fi
bash: [[: 10
  10: syntax error in expression (error token is "10")
False
wolf@linux:~$ 

가능합니까? 그렇지 않다면 올바른 접근 방식은 무엇입니까?

p/s - 죄송합니다. 이 질문의 정확한 제목이 무엇인지 잘 모르겠습니다. 나중에 변경됩니다(또는 필요하다고 생각되면 변경하세요).

x='10'
y=' 10
   10'
   
if [[ "$x" -eq 10 ]]; then echo True; else echo False; fi
if [[ "$y" -eq 10 ]]; then echo True; else echo False; fi

답변1

이 두 값은 실제로 다릅니다. y와 같지 않습니다 10.

x='10'
y=' 10
   10'

이것이 출력에 False가 나타나는 이유입니다. 이 두 변수를 에코하여 실제 값을 확인하세요.

$ echo $y
10 10
$ echo "$y"
 10
   10
$ 

True로 설정하려면 alexxs가 공유한 코드를 사용해 보세요.

for var in $y; do [ "$var" = 10 ] && echo "y=$var true" || echo "y=$var false"; done

샘플 출력

$ for var in $y; do [ "$var" = 10 ] && echo "y=$var true" || echo "y=$var false"; done
y=10 true
y=10 true
$ 

또는 이 작업을 수행하거나 파일에 저장하거나 터미널에서 직접 실행할 수 있습니다.

for var in $y; do
 if [[ "$var" = 10 ]]; then
  echo "y=$var True"
 else
  echo "y=$var False"
 fi
done

샘플 출력

$ for var in $y; do
>  if [[ "$var" = 10 ]]; then
>   echo "y=$var True"
>  else
>   echo "y=$var False"
>  fi
> done
y=10 True
y=10 True
$ 

관련 정보