BASH - почему так отрабатывает скрипт?

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Гость
проходил мимо

BASH - почему так отрабатывает скрипт?

Непрочитанное сообщение Гость » 2014-10-05 2:14:10

Куда делась единица?

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

$ cat test
1
2
$ while read line; do awk '{print $0}'; done < test
2
$

Гость
проходил мимо

Re: BASH - почему так отрабатывает скрипт?

Непрочитанное сообщение Гость » 2014-10-05 10:45:20

Еще примеры, как цикл съедает цифру 1:

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

$ while read line; do cat; done < test
2
$ while read line; do grep [0-9]; done < test
2


А вот так показывает первую строчку файла:

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

$ while read line; do echo $line; done < test
1
2
$


Neus
капитан
Сообщения: 1718
Зарегистрирован: 2008-09-08 21:59:56

Re: BASH - почему так отрабатывает скрипт?

Непрочитанное сообщение Neus » 2014-10-05 18:05:14

Если бы ты взял файл с количеством строк этак 10 - сразу бы понял где накосячил

Гость
проходил мимо

Re: BASH - почему так отрабатывает скрипт?

Непрочитанное сообщение Гость » 2014-10-06 10:05:52

Neus писал(а):Если бы ты взял файл с количеством строк этак 10 - сразу бы понял где накосячил


Так смысл не в том чтобы обойти это, а чтобы понять для себя почему так поисходит!? :st:

Neus
капитан
Сообщения: 1718
Зарегистрирован: 2008-09-08 21:59:56

Re: BASH - почему так отрабатывает скрипт?

Непрочитанное сообщение Neus » 2014-10-06 10:36:44

Гость писал(а):Так смысл не в том чтобы обойти это, а чтобы понять для себя почему так поисходит!? :st:

А где я предлагал обходить?
скорми скрипту последовательность 1..10 и анализируй сколько раз выполнится цикл и как
если не поймешь - тебе надо азы изучать

Гость
проходил мимо

Re: BASH - почему так отрабатывает скрипт?

Непрочитанное сообщение Гость » 2014-10-06 22:09:16

Neus писал(а):
Гость писал(а):Так смысл не в том чтобы обойти это, а чтобы понять для себя почему так поисходит!? :st:

А где я предлагал обходить?
скорми скрипту последовательность 1..10 и анализируй сколько раз выполнится цикл и как
если не поймешь - тебе надо азы изучать


Хоть последовательность в тысячу возьми - от этого суть не меняется. Не обрабатывается лишь 1я строка, что было понятно с 1го примера. Понятно что дело в чем-то пустиковом, что знает большинство опытных пользователей bash, но мне пока не ясно с чем это связано.

Neus
капитан
Сообщения: 1718
Зарегистрирован: 2008-09-08 21:59:56

Re: BASH - почему так отрабатывает скрипт?

Непрочитанное сообщение Neus » 2014-10-06 23:35:14

В твоих примерах (1-3) цикл вообще ничего не обрабатывает, да и выполняется 1 раз.
В примере 4 цикл выполнится столько раз сколько строк в файле выводя при этом переменную line в stdout
запусти вот такое на файле > 2 строк

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

$ while read line; do tail -n1; done < test

Гость
проходил мимо

Re: BASH - почему так отрабатывает скрипт?

Непрочитанное сообщение Гость » 2014-10-07 1:36:43

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

$ cat test
1
2
3
4
5
6
7
8
9
10
$ while read line; do tail -n 1; done < test
10
$ while read line; do tail -n 10; done < test
2
3
4
5
6
7
8
9
10


В чем соль? Как в моих примерах не работало, так и в твоем не работает.

Neus
капитан
Сообщения: 1718
Зарегистрирован: 2008-09-08 21:59:56

Re: BASH - почему так отрабатывает скрипт?

Непрочитанное сообщение Neus » 2014-10-07 4:57:39

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

$ cat test
1
2
3
4
5
6
7
8
9
10
$ while read line; do echo $line; tail -n 1; done < test
1
10

Сколько раз выполнился цикл?
Куда делись строки 2..9?



Вернуться в «SHELL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя