Я пишу ОЧЕНЬ простой скрипт bash с статусом «IF». Я писал много раньше, но по какой-то причине он не будет читать аргумент «$ {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)); тогда да; else # nope; fi' вместо этого. –
Другой [ответ я нашел] (http://stackoverflow.com/questions/669452/is-preferable-over-in-bash-scripts#answer-669486) говорит, что '[[...]]' не является POSIX совместим и может не работать, если вы получили скрипт bash с другой платформы. –