"IF"구문과 함께 매우 간단한 bash 스크립트를 작성하고 있습니다. 나는 전에 많은 것을 썼지 만, 어떤 이유로 "$ {hitA1} == 0"인수를 읽지 않습니다. $ {hitA1}은 파일에서 읽히고 실제로 읽는 것이며 실제로는 0과 같습니다. 대신 "$ {hitA1}! = 0"의 두 번째 인수로갑니다. 어떤 아이디어?인수가 읽히지 않는 경우
코드 :
배쉬와CorHitA1=0
MissA1=0
for i in 44 50 53 58 71
do
late=`expr $i + 1`
hitA1=`sed -n ${i}p _TMP_Acc1.txt`
hitlateA1=`sed -n ${late}p _TMP_Acc1.txt`
if [[ ${hitA1} == 0 ]]; then
echo "HEY!!!!!"
CorHitA1=`expr ${CorHitA1} + 1`
elif [[ ${hitA1} != 0 ]]; then
echo "Nope..."
echo ${hitA1}
fi
echo "CorHitA1 = " ${CorHitA1}
done
'set -x'를 (#!/bin/bash 다음에) 스크립트 상단에 추가하십시오. 그것은 당신에게 잘못된 것을 알기 쉽게 디버깅 출력을 줄 것입니다. –
스크립트를 실행할 때 실행을 추적하기 위해 스크립트 상단에'set -x'를 추가하십시오. 그렇다면 가치는 무엇입니까? 'if (($ {hitA1} == 0));을 사용해보십시오. then # yes; else # nope; fi'라고 표시합니다. –
다른 [답변] (http://stackoverflow.com/questions/669452/is-preferable-over-in-bash-scripts#answer-669486)은'[[...]]'는 POSIX가 아니라고 말합니다 호환 - 다른 플랫폼에서 bash 스크립트가 있다면 작동하지 않을 수 있습니다. –