Задание такое:
Написать бесконечный цикл, который будет раз в секунду выводить постоянно увеличивающееся число (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: Бесконечные числа
Код: Выделить всё
i=1;
while true
do
echo $i;
i=$((i+1));
sleep 1;
done"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
М. В. Ломоносов
-
/dev/random
- Администратор
- Сообщения: 5427
- ОС: Gentoo
Re: Бесконечные числа
Код: Выделить всё
for ((i=1;;i++))
do
echo $i
sleep 1
done-
кодировщик
- Сообщения: 974
- Статус: зарёган в пятницу 13
- ОС: Linux
Re: Бесконечные числа
Я вот на С только что попробывал, и ничего не вышло.
sleep почему-то заставляет скапливать вывод чисел в буфер?!
З.Ы. Утро - вечера мудренее.
sleep почему-то заставляет скапливать вывод чисел в буфер?!
З.Ы. Утро - вечера мудренее.
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux
Re: Бесконечные числа
кодировщик писал(а): ↑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: Бесконечные числа
поменял строчки местами, терь показывает каждый раз количество прошедших секунд
а насчёт ошибок в первом, там запятая между командами, она будет воспринята как символ для вывода командой echo
и ещё нужно учитывать, что в bash небольшие переменные, но я думаю ты столько и не просидишь за компом
Код: Выделить всё
[guest@station ~]$ I=0; while true; do ((I++)); sleep 1; echo $I; done;
1
2
3
[guest@station ~]$а насчёт ошибок в первом, там запятая между командами, она будет воспринята как символ для вывода командой echo
и ещё нужно учитывать, что в bash небольшие переменные, но я думаю ты столько и не просидишь за компом