2016-11-09 13 views
2

bashスクリプトの新種で、以下のコードに問題があります。 私はあなたが問題のほとんどは、私は問題があなたのifであると思い小数bashスクリプトif文、小数点比較

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 testscript.shそれから起動してみてください。また、シバンを加えてください。 – dood

+0

は動作しませんが、まだ同じエラーが発生しています –

+0

メッセージのこの部分は「=」です。 – 123

答えて

0

BGpercent =(0 99 99.3 99.6 99.8 100) BGpoint =(0 1 2 3 4 5)

エコー」の書き込みをどうするかわからないあなた番号」 読み出し番号

ための((C = $ {#BGpercent [@]} - 1; C> -1; C--)) は は$ {BGpercent [$ C]} ブールエコーありません= echo "if (${BGpercent[$c]} <= ${number}) 1" | bc ["$ bool" 1 -eq 11]; result = $ {BGpoint [$ c]} break fi

1

を比較している「ANS読み」からの入力を持っている数と列数を比較しようとしていますチェック(浮動小数点比較)。

#!/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

forループでもC変数の初期化を変更しましたか?このリンクを参照してください:http://www.unix.com/shell-programming-and-scripting/6996-syntax-error-line-1-teletype.html –

+0

@ A.M.D、これを変更しましたか? 'c = $ [#BGpercent [@]} - 1' –