2016-01-25 2 views
-9

В этом коде оболочки я понятия не имею, почему всегда говорят, что у меня синтаксическая ошибка, и я использую эту функцию для вычисления среднего и среднего числа строк.Почему всегда говорится о синтаксической ошибке в моем коде?

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 
} 
+3

*** Где *** это у вас есть ошибка синтаксиса? Попробуйте создать [mcve]. –

+0

он говорит между строкой «cols = $ {# array [@]}» и пусть «medpos = ($ cols/2)» – Snowlifelover

+0

Показать ** точный ** выход ошибки при запуске этой функции. Является ли это 'bash' или'/bin/sh' или какой-либо другой оболочкой? –

ответ

0

Try изменения:

let "$lineavg/=$cols" 

To:

let "lineavg/=$cols" 
Смежные вопросы