정상적인 상황
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
$