출력을 문자열과 비교하고 싶습니다. 내 스크립트는 다음과 같습니다
#!/bin/bash
DRBD=$(drbd-overview)
COMP=' 0:nfs-ha/0 Connected Secondary/Primary UpToDate/UpToDate'
DEBUG=1
if [ $DEBUG == "1" ];
then
echo "Debug:"
echo $COMP
echo $DRBD
echo "Debug-Ende"
fi
if [[ "x$DRBD" = "x$COMP" ]];
then
RTRN='Check_OK'
else
RTRN="$DRBD"
fi
echo "Return: $RTRN"
& bash -x script.sh는 다음과 같습니다:
bash -x scripts.sh
++ drbd-overview
+ DRBD=' 0:nfs-ha/0 Connected Secondary/Primary UpToDate/UpToDate '
+ COMP=' 0:nfs-ha/0 Connected Secondary/Primary UpToDate/UpToDate'
+ DEBUG=1
+ '[' 1 == 1 ']'
+ echo Debug:
Debug:
+ echo 0:nfs-ha/0 Connected Secondary/Primary UpToDate/UpToDate
0:nfs-ha/0 Connected Secondary/Primary UpToDate/UpToDate
+ echo 0:nfs-ha/0 Connected Secondary/Primary UpToDate/UpToDate
0:nfs-ha/0 Connected Secondary/Primary UpToDate/UpToDate
+ echo Debug-Ende
Debug-Ende
+ [[ x 0:nfs-ha/0 Connected Secondary/Primary UpToDate/UpToDate = \x\ \0\:\n\f\s\-\h\a\/\0\ \ \C\o\n\n\e\c\t\e\d\ \S\e\c\o\n\d\a\r\y\/\P\r\i\m\a\r\y\ \U\p\T\o\D\a\t\e\/\U\p\T\o\D\a\t\e ]]
+ RTRN=' 0:nfs-ha/0 Connected Secondary/Primary UpToDate/UpToDate '
+ echo 'Return: 0:nfs-ha/0 Connected Secondary/Primary UpToDate/UpToDate '
Return: 0:nfs-ha/0 Connected Secondary/Primary UpToDate/UpToDate
내가 뭘 잘못하고 있는 걸까요? $COMP가 bash 문에서 이스케이프 처리되었나요?
답변1
두 문자열은 동일하지 않습니다. $DRBD
끝에 공백이 있고 공백 $COMP
이 없습니다(추적 출력에서 이를 볼 수 있음). 그래서 RTRN
비교가 로 설정되지 않았습니다 Check_OK
.