Shell скрипт
Берешь какое нибудь руководство, типа
у меня есть книга на руках и если бы было все так простл, я бы не спрашивала.
опиши, в чём состоит задача
Но если вдруг действительно нужны числа (обычно это для заполнения файлов то ботай
man seq
Пример:
for i in `seq 0 1 200`; do
echo $i
done
Блин, ну неужели так сложно ответить. Сразу становиться понятно, что наверняка, вы и сами то не знаете.
пост дилитед бай Джо_Бишоп
Мне надо написать цикл, чтобы запускать пинг при разных параметрах.
Subject: Re: Shell скрипт
сама дура
Я тебя обожаю. У меня похоже все заработало
синтаксис bash (скорее он то и стоит) очень похож на С и perl, с учетом того, что можно выполнять команды окружения прямо из скрипта
Всё время радуют такие люди, которые не задумываются,
что seq может выдать чуть больше, чем 16384 или сколько
там в линуксе строк.
---
"Аллах не ведёт людей неверных."
кохтпа, не придумывай
Кохтпа всё правильно сказал. Такой метод организации цикла - неправильный.
Такой метод организации цикла - неправильный.+1.
всего будет выведено100-200 - 101 слово по 3 знака. потом 10-99 - 89 слов по 2 знака, и 10 слов по одному знаку. Итого: в словах будет 303+178+10=491 знак в этих словах. Прибавим 201 символ разделения, даже 3*201. Будет 491+603=1094 знака, что намного меньше чем 16384
ЗЫ
про
i=0
while [ $i -le 200 ]; do
........
i = $i+1
done
я конечно знаю, только букав много, имхо
если бы ты сразу сказал, что твоё решение для коротких
циклов, то и нареканий не возникло бы.
---
"Аллах не ведёт людей неверных."
for i=0; i<200 ; i++
do
...
done
$ for i in `seq 0 100000` ; do echo $i ; done | tail
99991
99992
99993
99994
99995
99996
99997
99998
99999
100000
Что я делаю не так?
А линуксоиды опять забывают про то, что bash это не POSIX shell.
~>for i in `seq 0 100000` ; do echo $i ; done | tail
zsh: command not found: seq
а я что неверно делаю?
это интерикс что ли?
~>uname -a
FreeBSD gw.cars 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE Tue Nov 14 15:16:28 MSK 2006 carsgate:/usr/obj/usr/src/sys/CARSGATE i386
> FreeBSD
Просто замечание KOHTPы хоть и верное, но в данном случае неприменимо.
никогда не подводило
seq не является POSIX утилитой. Вы уж уважаемые линуксоиды пишите сабжекты правильно. Вместо слова sh пишите bash, вместо слова UNIX пишите Linux (GNU coreutils).
Слова UNIX в треде вообще не появлялось до тебя, тебе померещилось.
Слово Linux было честно в первом посте.
не используют bash и seq по религиозным причинамВо-первых, не путай религиозные с лицензионными. Во-вторых, причина иная. Причина в том, что есть sh и jot ещё с восимедесятых годов. Заменять более POSIX-complaint sh на менее POSIX-complaint bash, который ещё и больше жрёт памяти, течёт и падает в кору могут только гну-фанатики. Что же до jot, то c какого хуя добавлять лишнюю команду seq, из-за того, что какой-то студент фанат линукса поленился узнать о том, что существует в мире перед тем как изобретать свой велосипед?
Если бы ты первым предложил решение на их основе, понты были бы зачтены. А так - не впечатляет.
> Во-первых, не путай религиозные с лицензионными.
Именно религиозные.
Лицензия не запрещает использовать bash и seq на FreeBSD.
HISTORY
The seq command first appeared in Plan 9 from Bell Labs. A seq command
appeared in NetBSD 3.0. This command was based on the command of the
same name in Plan 9 from Bell Labs and the GNU core utilities. The GNU
seq command first appeared in the 1.13 shell utilities release.
---
"This user is BSD-compliant."
В обратную сторону, в отношении sh и jot --- тоже. Однако?
---
...Я работаю антинаучным аферистом...
А понтов никаких нет. Я просто давно имею привычку обламывать треды, которые якобы посвящены sh-программированию, а на самом деле оказываются bash-программированием, причём постоянно с использованием linux-специфичных утилит.
Тем более, что я против решения на jot, по причинам, по которым КОНТРА против seq.
> Лицензия не запрещает использовать bash и seq на FreeBSD.
Она накладывает условия, не позволяющие включить в состав FreeBSD.
HISTORYА у меня вот (в Fedora Core написано вот так:
The seq command first appeared in Plan 9 from Bell Labs.
AUTHOR
Written by Ulrich Drepper.
REPORTING BUGS
Report bugs to <bug-gnu.org>.
COPYRIGHT
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
Если ограничиться только софтом, который "включен в состав", даже world не собрать
Ты никого не обломал, тут все уже свои циклы написали как хотели.
прослеживается до 93-го года. По крайней мере, пока принадлежит.
---
...Я работаю антинаучным аферистом...
> Если ограничиться только софтом, который "включен в состав",
> даже world не собрать
"Работы ведуться!"
---
...Я работаю антинаучным аферистом...
В обратную сторону, в отношении sh и jot --- тоже. Однако?В моём дистрибутиве эти штуки есть.
Я их сейчас на всякий случай поставил - вдруг напишет какой-нибудь полезный скрипт с использованием кошерных утилит
Они пишут кошерный компилятор? Хорошо бы, только что-то на сайте не нашёл упоминания о таком деле.
Да это Кохтпа пёрнул мозгом.
> Они пишут кошерный компилятор? Хорошо бы, только
> что-то на сайте не нашёл упоминания о таком деле.
Гоям не обязательно знать, кто и где пишет кошерный компилятор.
Кошерный компилятор пишут тут.
---
"Аллах не ведёт людей неверных."
bash появился в 1987г, а то, что ты называешь sh - в 1989
до этого был некошерный AT&T Borne Shell
> Заменять более POSIX-complaint sh на менее POSIX-complaint bash
Во-первых, никто не заменял, bash был перенесён Линусом сразу.
Во-вторых, а какие ты знаешь несовместимости bash с POSIX?
> синтаксис bash (скорее он то и стоит) очень похож на С
Это у bash-то синтаксис похож на С?!
Это у csh синтаксис похож на С!
---
"This user is BSD-compliant."
Проверь тред, речь о другом. Ты сказал, что религиозные соображения не дают его включить в FreeBSD. Я сказал, что заменять sh на bash никто не будет.
> Во-вторых, а какие ты знаешь несовместимости bash с POSIX?
Как минимум задокументированные в файле POSIX, в сорцах bash.
P.S. Ни разу не видел, чтобы кто-то писал #!/bin/bash --posix.
Разве не кошернее писать "#!/usr/bin/env bash --posix"?
---
"This user is BSD-compliant."
Это у bash-то синтаксис похож на С?!ну епрст, ну не на псакаль же он похож! просто степень похожести разная
Это у csh синтаксис похож на С!
Неа, я такого не говорил.
Я говорил, что тебе они мешают его использовать для исполнения скриптов. Ничего заменять для этого не надо.
> Как минимум задокументированные в файле POSIX, в сорцах bash.
Надо же, 3 штуки. Сложно представить, чтобы в реальном скрипте что-то из этого использовалось - по крайней мере я таких не видел.
> P.S. Ни разу не видел, чтобы кто-то писал #!/bin/bash --posix.
А и не надо, можно ведь написать #!/bin/sh
А линуксоиды опять забывают про то, что bash это не POSIX shell.Ну в нём же типо есть ержим совместимости?
Надо же, 3 штуки. Сложно представить, чтобы в реальном скрипте что-то из этого использовалось - по крайней мере я таких не видел.И ещё 32 штуки, которые не работают по дефолту, приучая линуксоидов к непортабельному программированию.
А и не надо, можно ведь написать #!/bin/shДействительно приятная новость.
какое же непортабельное?
bash ставится одной командой
Подозреваю, что этой новости лет 15.
какое же непортабельное?Это когда человек возьмёт скрипт, который начинается на !#/bin/sh, а скрипт не будет работать. Про то, что такое bash человек может не знать.
bash ставится одной командой
Это когда человек возьмёт скрипт, который начинается на !#/bin/sh, а скрипт не будет работать.А прикинь, если человек возьмёт программу hello.c, а она не компилируется. Потому что не на ANSI С написана, а для какой-то реальной системы, например FreeBSD. Что теперь, для FreeBSD новое расширение для С-программ изобретать?
>> Это у csh синтаксис похож на С!
> ну епрст, ну не на псакаль же он похож!
> просто степень похожести разная
Ага, встроеный язык BIND очень похож на С, даже скобочки те же.
---
...Я работаю антинаучным аферистом...
>> #!/bin/sh, а скрипт не будет работать.
> А прикинь, если человек возьмёт программу hello.c,
> а она не компилируется. Потому что не на ANSI С написана,
> а для какой-то реальной системы, например FreeBSD.
В GNU не присутствует функций, отсутствующих в стандарте ANSI C?
/bin/sh, вообще-то, зарезервирован для POSIX sh.
А вообще, это та же проблема с кривонаписанным софтом,
что и вбитые пути к файлам.
> Что теперь, для FreeBSD новое расширение для С-программ изобретать?
А что такое расширение?
---
...Я работаю антинаучным аферистом...
Ну я не спорю, что писать /bin/sh и использовать расширения bash - нехорошо.
Однако, в этом треде подобных скриптов не было, а всё равно взялся кого-то обламывать
Они даже в POSIX присутствуют.
А файлы всё равно называют *.c , что для GNU, что для FreeBSD.
Иногда даже пишут где-нибудь рядом в мейкфайле, что нужно компилировать их c помощью cc.
> Они даже в POSIX присутствуют.
> А файлы всё равно называют *.c , что для GNU, что для FreeBSD.
Ну так проблема-то общая для всех ОС, где метаинформация
может быть оторвана от данных.
> Иногда даже пишут где-нибудь рядом в мейкфайле,
> что нужно компилировать их c помощью cc.
В наших краях их принято компилировать с помощью make и ${CC}.
---
"Аллах не ведёт людей неверных."
А прикинь, если человек возьмёт программу hello.c, а она не компилируется. Потому что не на ANSI С написана, а для какой-то реальной системы, например FreeBSD.И что? Где здесь FreeBSD приучает к непортабельному программированию? Я вот привёл конкретный пример, что по-дефолту отключенная POSIX совместимость в bash приучает к непортабельному программированию.
Ну типа используюешь функцию, например, open(2) и флаг O_RDONLY.
А в ANSI такого не положено.
Чо за бред? ANSI вообще не касается системного API, а касается только синтаксиса языка.
Однако fopen там есть.
> Однако fopen там есть.
Однако fopen не относится к системному, вернее, ядерному API.
STANDARDS
The fopen and freopen functions conform to ANSI X3.159-1989
(``ANSI C89''). The fdopen function conforms to ISO/IEC 9945-1:1990
(``POSIX.1'').
---
...Я работаю антинаучным аферистом...
Кому от этого легче?
> Кому от этого легче?
Линуксу!
---
A9: ОС - это БЗДя
Оставить комментарий
Privezentsev
Как написать его в линухе, в частности, у меня проблема с циклом. Как ему задать, что переменная изменяется от такого до такого значения с таким то шагом?