【发布时间】:2016-11-07 22:34:41
【问题描述】:
#! /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=33 时它会告诉
(standard_in) 1: illegal character: \
(standard_in) 1: syntax error
当我评论第 13 行时,此错误消失,但非常有必要拥有它,而且我无法获得 $r 和第 13 行之间的关系 谢谢大家
【问题讨论】:
-
您是否希望我们自己运行代码,检查所有调试输出,而我们甚至没有您正在使用的数据?
-
你是如何运行脚本的?什么输入?当它确实工作时输出是什么?一个提示:您没有引用所有参数,这可能会在重要时导致难以发现的错误。例如,尝试
sigma=$(bc <<< "$2 * ($4 + 1)")。