2016-11-07 3 views
-1
#! /bin/bash 
#N Step Staggered Summation 
#Four parameters, NSSS(b,n,mu,p)=NSSS($1,$2,$3,$4) 

echo "NSSS(b,n,mu,p)=NSSS($1,$2,$3,$4)" 
sigma=$(bc <<< ''$2'*('$4'+1)') 
echo "sigma=$sigma" 
let n=0 
for ((r=0; r <= $4; r++)) 
    do 
     s=$(bc <<< 'scale='$sigma';'$1'*'$3'^'$r'/(10^('$2'*('$r'+1)))') 
     echo "$s" 
     n=$(bc <<< 'scale='$sigma';('$s'+'$n')/1') 
    done 
echo "M($1,$2,$3)=" 
bc <<< 'scale='$sigma';'$1'/(10^'$2'-'$3')' 
echo "NSSS($1,$2,$3,$4)" 
echo "$n" > nsss 
cat nsss 

これは私のコードで、それは$ 4 < = 32正常に動作しますが、私は> = 33 $ 4選択したときに、私がコメントするときには、このエラー。消える、BASH

(standard_in) 1: illegal character: \ 
(standard_in) 1: syntax error 

を伝えます13行目が、それを持っていることがかなり必要である、と私は みんなありがとう

+4

使用しているデータがなくても、すべてのデバッグ出力を調べて、コードを自分で実行することを期待していますか? –

+1

どのようにスクリプトを実行していますか?どのような入力? *出力したときの出力は何ですか? 1つのヒント:すべてのパラメータを引用符で囲まずにしておくと、重要なときに見つけにくいエラーが発生する可能性があります。たとえば、 'sigma = $(bc <<<" $ 2 *($ 4 + 1) ")'を試してください。 – chepner

答えて

0
export BC_LINE_LENGTH=0 

は、スクリプトで最初にこの行を入れて$ rと13行目の間の関係を取得することはできません。