Страница 1 из 1

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
$

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

Добавлено: 2014-10-05 17:51:08
Neus
Бинго!

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

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

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

Добавлено: 2014-10-06 10:05:52
Гость
Neus писал(а):Если бы ты взял файл с количеством строк этак 10 - сразу бы понял где накосячил
Так смысл не в том чтобы обойти это, а чтобы понять для себя почему так поисходит!? :st:

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

Добавлено: 2014-10-06 10:36:44
Neus
Гость писал(а): Так смысл не в том чтобы обойти это, а чтобы понять для себя почему так поисходит!? :st:
А где я предлагал обходить?
скорми скрипту последовательность 1..10 и анализируй сколько раз выполнится цикл и как
если не поймешь - тебе надо азы изучать

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

Добавлено: 2014-10-06 22:09:16
Гость
Neus писал(а):
Гость писал(а): Так смысл не в том чтобы обойти это, а чтобы понять для себя почему так поисходит!? :st:
А где я предлагал обходить?
скорми скрипту последовательность 1..10 и анализируй сколько раз выполнится цикл и как
если не поймешь - тебе надо азы изучать
Хоть последовательность в тысячу возьми - от этого суть не меняется. Не обрабатывается лишь 1я строка, что было понятно с 1го примера. Понятно что дело в чем-то пустиковом, что знает большинство опытных пользователей bash, но мне пока не ясно с чем это связано.

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

Добавлено: 2014-10-06 23:35:14
Neus
В твоих примерах (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
В чем соль? Как в моих примерах не работало, так и в твоем не работает.

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

Добавлено: 2014-10-07 4:57:39
Neus

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

$ 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?

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

Добавлено: 2014-10-31 12:23:21
Гость
Спасибо, теперь разобрался.