Помогите разобраться с bash

Пытаюсь написать цикл который будет выполняться до тех пор пока в файле не останется строк.

file1=test.txt

# Команды "wc -l $file1 | cut -d ' ' -f1" подсчитывают число строк в файле
# может не лучший вариант, нашёл в интернете

i=$(wc -l $file1 | cut -d ' ' -f1)

for i in [ $i -ge 1 ]; do

    # Любая команда для проверки
    echo $(wc -l $file1 | cut -d ' ' -f1)
    
    # Удаляет из файла первую строку
    sed -i /"`head -n 1 $file1`"/d $file1

    # Задаёт переменной новое значение
    i=$(wc -l $file1 | cut -d ' ' -f1)

done

Я ожидал что из файла будет удаляться по одной строке и в неременную i каждый раз будет вписываться значение меньше на единицу. И так пока строки не закончатся. Но цикл выполняется 5 раз и останавливается. Почему так происходит ?

ну вы и накрутили!!! :)

for i in $(seq `cat $file1|wc -l`) ;do
sed -i '1d' $file1
done

Спасибо, у меня опыта совсем

Спасибо, у меня опыта совсем нет. Команду seq ещё ни разу не встречал. Ваш вариант отлично работает. Но не могу понять почему то что я наворочал не срабатывало.

Весьма поучительная книжка

Весьма поучительная книжка ежели владеете инглишем.
http://www.tldp.org/LDP/abs/abs-guide.pdf

Ну или сюда, ежели с последним проблемы.
http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html

Весьма полезно в качестве настольного справочника, ибо через перлы баша голову свернуть немудрено.

Цитата: # Удаляет из

Цитата:
# Удаляет из файла первую строку
sed -i /"`head -n 1 $file1`"/d $file1

Кошмар

sed -i '1d' file1

Почитайте Advanced Bash Scripting guide, ну и Sed FAQ тогда уж

Нейтральность - высшее достижение сознания!

Куда мне Advanced читать ? Я

Куда мне Advanced читать ? Я только начинаю. Ну а "sed -i /"`head -n 1 $file1`"/d $file1" это обычная ошибка в процессе кто их не делает ?

AhDoh4aChahr написал(а): Куда

AhDoh4aChahr написал(а):
Куда мне Advanced читать ? Я только начинаю

Дельный совет же, Advanced Bash-Scripting Guide как раз и поможет правильно начать писать скрипты.

____________
Экономь электроэнергию! Выключи NumLock!

.

AhDoh4aChahr написал(а):
Куда мне Advanced читать ?

Ну… С такой постановкой вопроса можно послать туда же (на The Linux Documentation Project) за Bash-Beginners-Guide.

:wq
--
Live free or die

Anarchist

Anarchist написал(а):
AhDoh4aChahr написал(а):
Куда мне Advanced читать ?

Ну… С такой постановкой вопроса можно послать туда же (на The Linux Documentation Project) за Bash-Beginners-Guide.

Да Вы не думайте что не читаю, Advanced начинал но пришлось вернуться к Beginners.
Тяжело идёт в одиночку. Мне это настолько не с кем обсудить что в ближайшем окружении даже ни кто компьютера не имеет.
:)

А если сменить постановку с

А если сменить постановку с "пока не кончаться строки в файле", на посчитать кол-во строк или проделать что-то для каждой строки, то все ёще упростится

Ну да, задумка была именно

Ну да, задумка была именно "посчитать кол-во строк или проделать что-то для каждой строки".
У меня такая дурацкая привычка вопросы излагать не точно. Наверное подсознательно я стесняюсь своей неграмотности и к тому-же более широкое толкование вопроса оставляет простор для фантазии. В редких случаях это приводит к очень положительным результатам. Одна из схем {ученик - учитель}.

При таком подходе часто случаются и отрицательные моменты. Например появление постов от людей,
не в полной мере понимающих `чё-как` но желающих отписаться. Или другой момент: старые вонючие троли которые всем надоели. С первой категорией надо обращаться нежно поскольку они ничего плохого не сделали. А вторую категорию игнорировать. Слышал байки о том что программист это грамотный, образованный и несомненно интиллигентный человек
# сейчас тавтология но позже поправлю
# блин, кто придумал писать одну и ту же букву несколько раз подряд в одном и том же слове без видимого повода?)

схема писать на ходу себя не оправдала. оперативная память загружена более важными задачами а своп на старом диске который сыпется. Изящно мысль не законч^ю. И да! Юмор тут не при чём. Всё по чесТному.

Не знаю, что на это отвечать

Не знаю, что на это отвечать - никаких вопросов, сплошные намеки

в такой постановке это один цикл и внутри одна команда "сделать что-то с текущей строкой", пример есть в любом учебнике/руководстве по bash

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".