【问题标题】:For loop strange behavior, BASH对于循环奇怪的行为,BASH
【发布时间】: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 &lt;&lt;&lt; "$2 * ($4 + 1)")

标签: bash for-loop


【解决方案1】:
export BC_LINE_LENGTH=0

将此行放在脚本的开头。

【讨论】:

    猜你喜欢
    • 2013-05-24
    • 2013-05-10
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多