对于循环奇怪的行为,BASH

时间:2016-11-07 22:34:41

标签: bash for-loop

#! /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&lt; = 32,但当我选择$ 4&gt; = 33时它告诉

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

当我评论第13行时,这个错误消失了,但是非常需要它,并且我无法获得$ r和第13行之间的关系 谢谢你们

1 个答案:

答案 0 :(得分:0)

export BC_LINE_LENGTH=0

将此行放在脚本的开头。