为啥总是在我的代码中显示语法错误?

Posted

技术标签:

【中文标题】为啥总是在我的代码中显示语法错误?【英文标题】:Why always says syntax error in my code?为什么总是在我的代码中显示语法错误? 【发布时间】:2016-05-02 03:58:21 【问题描述】:

在这个shell代码中,我不知道为什么总是说我有语法错误,我使用这个函数来计算行号的中位数和平均值。

rows()
 echo -e "Average:\tMedian:";
while read line
do
    array=($line)
    lineavg=0;
    linemed=0;
    medpos=0;



    for((i=0;i<$#array[@];i++))
    do
        let "lineavg+=$array[$i]"
    done

    cols=$#array[@]

    let "lineavg=$lineavg+($cols/2)"

    let "$lineavg/=$cols"
    let "medpos=($cols/2)"  
    sorted=($(printf '%s\n' "$array[@]"| sort -g))

    if [ $((cols%2)) -eq 0 ]; then
        let "medpos--"
        if [[ "array[$medpos]"<"array[medpos+1]" ]]; then
            let "medpos++"
        fi
    fi
    let "linemed=$sorted[$medpos]"

    echo -e $lineavg '\t\t' $linemed
done<$inputfile

【问题讨论】:

Where 是说你有语法错误吗?尝试创建minimal reproducible example。 它说在 "cols=$#array[@]" 和 let "medpos=($cols/2)" 之间 显示运行此函数的 exact 错误输出。这是bash/bin/sh 还是其他shell? 这样的确切错误:平均:中位数:test1.sh:第 27 行:cols=0:找不到命令 test1.sh:第 29 行:让:lineavg=0+(/2):语法错误:预期操作数(错误标记为“/2)”) test1.sh:第 30 行:让:0/=:尝试分配给非变量(错误标记为“/=”) test1.sh:第 31 行:让: medpos=(/2): 语法错误:操作数预期(错误标记是“/2)”) test1.sh:第 39 行:let:linemed=:语法错误:操作数预期(错误标记是“=”)跨度> 部分脚本中可能的 DOS 行结尾? 【参考方案1】:

尝试改变:

let "$lineavg/=$cols"

收件人:

let "lineavg/=$cols"

【讨论】:

以上是关于为啥总是在我的代码中显示语法错误?的主要内容,如果未能解决你的问题,请参考以下文章

更新时更新语句中的语法错误

如何在我的 JS 文件中发表评论?使用 HTML 语法错误和 JS 错误? [复制]

我的 Outer Apply 语句中有语法错误,我不明白为啥[重复]

为啥“isset($a[0]) 和 unset($a[0]);”导致语法错误?

在 firebug 中发现 JQuery 语法错误,但在我的代码中没有

为啥三元运算符在我的代码中不起作用?