2016-01-29 6 views
-2

Этот скрипт печатает номера таким образом, но показывает ошибки в скрипте, но не может декодировать ошибку.Ошибка во время цикла

#!/bin/bash 
    x=0 
    while [ $x -lt 10 ] 
     do 
     y=$x 
     while [ $y -ge 0 ] 
     do 
      echo "$y \c" 
      y=$(($y-1)) 
     done  #showing done error 
     echo  
    x=$(($x+1)) 
done   #showing done error 
+2

Что должен делать сценарий? Что оно делает? –

+2

Ничего плохого в синтаксисе - я подозреваю, что это проблема с окончанием строки, обычно вызванная концами строк в стиле Windows. –

+3

Какая ошибка? –

ответ

-1

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

Я понимаю, ваш сценарий, вероятно, является изучением упражнений, но и для будущем, good habit делегировать сложные процедуры в подпрограммы, такие как фильтры, и сужать использование оболочки для написания рабочего процесса программы, сборки конкретного, сложных элементов, простым способом.

Вот мое взятие в AWK:

awk 'BEGIN{ 
    for(i = 0; i < 10; ++i){ 
    for(j = i; j>=0; j--){ 
     printf("%d%s", j, (j > 0 ? " " : "\n")); 
    } 
    }; 
    exit 
}' 

Здесь вместо AWK, вы можете использовать свой любимый язык сценариев, так как Python или Perl, например.

Смежные вопросы