2016-11-09 3 views
2

Тип нового для bash-скриптов и имеет проблемы с приведенным ниже кодом. Я пытаюсь сравнить номер массива с номером у вас есть вход со стороны «читать анс» проблема в основном сравнение десятичных чиселbash scripting if statement, сравнивая десятичные

BGpercent=(0 99 99.3 99.6 99.8 100) 
    BGpoint=(0 1 2 3 4 5) 
    read ans 
    for ((c=${#BGpercent[@]}; c>=0; c--)) 
    do 
     echo "${BGpercent[$c]}" 
     if [ "${BGpercent[$c]}" <= "$ans" ]; 
     then 
     result=${BGpoint[$c]} 
     break 
     fi 
    done 
    echo $result | bc -lstrong text 

Error - ./testscript.sh: =: No such file or directory

+0

chmod 750 testcript.sh затем попробуйте запустить его. Кроме того, добавьте shebang. – dood

+0

не работает, все еще с той же ошибкой –

+0

Эта часть сообщения '=:' странная. – 123

ответ

0

BGpercent = (0 99 99,3 99,6 99,8 100) BGpoint = (0 1 2 3 4 5)

эхо "напиши номер:» номер чтения

для ((с = $ {# BGpercent [@]} - 1; с> -1; c--)) делают эхо $ {BGpercent [$ с]} BOOL = echo "if (${BGpercent[$c]} <= ${number}) 1" | bc если ["$ bool" 1 -eq 11]; затем result = $ {BGpoint [$ c]} break fi

1

Я предполагаю, что проблема заключается в вашем if проверка (сравнение с плавающей запятой).

#!/bin/bash 

    BGpercent=(0 99 99.3 99.6 99.8 100) 
    BGpoint=(0 1 2 3 4 5) 
    read ans 
    for ((c=$[ ${#BGpercent[@]} - 1 ] ; c>=0; c--)) 
    do 
     if (($(echo "${BGpercent[$c]} <= $ans" |bc -l))); 
     then 
     result=${BGpoint[$c]} 
     break 
     fi 
    done 

Кроме того, значение переменной c должно быть уменьшено в начале, иначе она будет содержать недопустимое значение индекса. Я не уверен, что вы намерены делать с последней строки (echo $result | bc -lstrong text)

+0

Привет, спасибо за ответ! теперь я получаю эту ошибку. Синтаксическая ошибка в строке 1, телетайп –

+0

Вы также изменили инициализацию переменной c в цикле for? См. Эту ссылку: http://www.unix.com/shell-programming-and-scripting/6996-syntax-error-line-1-teletype.html –

+0

@ A.M.D, вы изменили это? 'c = $ [$ {# BGpercent [@]} - 1' –