2016-11-07 133 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正常工作,但是当我选择$ 4> = 33,它告诉For循环奇怪的现象,BASH

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

这个错误自败当我发表意见13日线,但很需要有它,我不能得到$ r和13号线 谢谢你们

+4

您是否希望我们自己运行代码,检查所有调试输出,当我们甚至没有您使用的数据时? –

+1

你如何运行脚本?什么投入? * *做*时的输出是什么?一个提示:您将保留所有参数不加引号,这会在重要时导致难以发现的错误。例如,尝试'sigma = $(bc <<<“$ 2 *($ 4 + 1)”)'。 – chepner

回答

0
export BC_LINE_LENGTH=0 

在脚本中把这一行的开头之间的关系。