Бесконечные числа (Проверьте скрипт на ошибки)

Модератор: Модераторы разделов

Daert
Сообщения: 1

Бесконечные числа

Сообщение Daert »

Задание такое:
Написать бесконечный цикл, который будет раз в секунду выводить постоянно увеличивающееся число (1, 2, 3, 4 ...).

вот что я наваял

#!/bin/sh
i=1
while true
do
echo $1, sleep 1
i = 'expr $1+1'
done



Укажите ошибки, и если это возможно в каком направлении двигацо... этот ли оператор цикла оптимален для этой задачи?
Заранее спасибо.

З.Ы: погами пролшу сильно не пинать.. перывае 2 часа сижу за sh...
Спасибо сказали:
Аватара пользователя
Voice
Сообщения: 1073
Статус: столлманист
ОС: Debian GNU/Linux

Re: Бесконечные числа

Сообщение Voice »

Код: Выделить всё

i=1;
while true
do
    echo $i;
    i=$((i+1));
    sleep 1;
done
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5427
ОС: Gentoo

Re: Бесконечные числа

Сообщение /dev/random »

Код: Выделить всё

for ((i=1;;i++))
do
  echo $i
  sleep 1
done
Спасибо сказали:
Аватара пользователя
кодировщик
Сообщения: 974
Статус: зарёган в пятницу 13
ОС: Linux

Re: Бесконечные числа

Сообщение кодировщик »

Я вот на С только что попробывал, и ничего не вышло.
sleep почему-то заставляет скапливать вывод чисел в буфер?!

З.Ы. Утро - вечера мудренее.
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: Бесконечные числа

Сообщение Rootlexx »

кодировщик писал(а):
17.03.2009 01:11
Я вот на С только что попробывал, и ничего не вышло.
sleep почему-то заставляет скапливать вывод чисел в буфер?

Код покажите. Если выводите каждое число не в новой строке, то либо выводите в stderr (этот поток не буферизуется), либо делайте «fflush(stdout);» после каждого вывода.
Спасибо сказали:
Аватара пользователя
кодировщик
Сообщения: 974
Статус: зарёган в пятницу 13
ОС: Linux

Re: Бесконечные числа

Сообщение кодировщик »

Rootlexx писал(а):
17.03.2009 11:20
кодировщик писал(а):
17.03.2009 01:11
Я вот на С только что попробывал, и ничего не вышло.
sleep почему-то заставляет скапливать вывод чисел в буфер?

Код покажите. Если выводите каждое число не в новой строке, то либо выводите в stderr (этот поток не буферизуется), либо делайте «fflush(stdout);» после каждого вывода.

да спасибо, выводил не в новой строке, а про fflush я и забыл.
Получается так.

Код: Выделить всё

for(;;)
{
i++;
printf("\t %li",i);
fflush(stdout);
sleep(1);
}
Спасибо сказали:
Аватара пользователя
Folderx
Сообщения: 296
ОС: fedora, mandriva

Re: Бесконечные числа

Сообщение Folderx »

поменял строчки местами, терь показывает каждый раз количество прошедших секунд

Код: Выделить всё

[guest@station ~]$ I=0; while true; do ((I++)); sleep 1; echo $I; done;
1
2
3

[guest@station ~]$


а насчёт ошибок в первом, там запятая между командами, она будет воспринята как символ для вывода командой echo
и ещё нужно учитывать, что в bash небольшие переменные, но я думаю ты столько и не просидишь за компом :)
Спасибо сказали: