LINUX.ORG.RU

Простой скрипт на bash


0

0

Здравствуйте!
Помогите чайнику написать простой скрипт на bash.
Я сейчас в процессе изучения баша, а скрипт нужен срочно.
Задача несложная:
Есть файл со списком строк, типа:

001 SOME TEXT
002 SOME TEXT 2
...

Для каждой строки из файла нужно вывести текст (без начального номера), дождаться появления в текущей директории файла с названием noname_0. или noname_1. и переименовать его в S001.wav (S002.wav, S003.wav... - соответственно номеру текущей строки).
Файлы, которые появляются в директории могут называться только noname_0. или noname_1.. Они там появляются попеременно.

Для меня самая сложность - в «дождаться появления файла». Это уже какие-то хитрые техники.

Заранее спасибо!

а теперь еще раз только медленно и по-русски

wlan ★★
()

навскидку придумалось только создавать touch файл - проверять, есть ли newer, переименовывать его, делать touch ...

костыль конечно, но без костылей тут думаю не обойдется

Unclown
()
while [ ! -f file ]; do
    sleep 1
done
echo file exists

Дальше сам.

Smeea
()

> Для меня самая сложность - в «дождаться появления файла». Это уже какие-то хитрые техники.

inotify?

t184256 ★★★★★
()
Ответ на: комментарий от Laz

Quote:

man test

Скорее, man bash, секция CONDITIONAL EXPRESSIONS.

GotF ★★★★★
()

дождаться появления файла

Ты его скачиваешь или грабишь или ещё что-то в этом духе? Переименовать в момент появления - плохая идея. Надо бы дождаться, пока он допишется, а о сём факте может знать только прога которая в него пишет. Можно дождаться появления noname_1 и после этого переименовать noname_0.

Xenesz ★★★★
()
Ответ на: комментарий от Xenesz

Это только если прога, которая формирует файл, будет его закрывать и переоткрывать в процессе формирования.

Begemoth ★★★★★
()
Ответ на: комментарий от Xenesz

> По условиям файлы «появляются».
Вот поэтому и нужен эвент из ядра на закрытие файла. И вообще постановка задачи дикая. :)

Lumi ★★★★★
()
Ответ на: комментарий от Xenesz

Ты его скачиваешь или грабишь или ещё что-то в этом духе? Переименовать в момент появления - плохая идея. Надо бы дождаться, пока он допишется, а о сём факте может знать только прога которая в него пишет. Можно дождаться появления noname_1 и после этого переименовать noname_0.

Хорошая мысль. Я его не скачиваю. Этот файл появляется в результате записи голоса диктора, который произносит текст из файла. Так что скорей всего его он создается через открытие-запись данных-закрытие. Правда дожидаться пока появится второй файл, чтобы переименовать первый...

while [ ! -f file ]; do sleep 1 done

Мне кажется тут больше подойдет [ ! -w file ]

Когда я открывал файл на редактирование такая конструкция прохавала, что переименовывать нельзя.

kometa_triatlon
() автор топика
Ответ на: комментарий от Laz

> man test

а там есть про echo test... test... test... ?

anonymous
()
Ответ на: комментарий от Lumi

И вообще постановка задачи дикая. :)

Ну почему же. Если бы файлуха была сетевая, физически на другой машине, и на ней же создавались бы файлы, и с которой никакое ядро ивент посылать не собирается, осталось бы только за появлением файлов следить, без вариантов.

Xenesz ★★★★
()
Ответ на: комментарий от kometa_triatlon

> дожидаться пока появится второй файл

возможно поможет

lsof filename

sin_a ★★★★★
()
Ответ на: комментарий от kometa_triatlon

>Этот файл появляется в результате записи голоса диктора, который произносит текст из файла
ага. скрипт выводит текст на экран диктору, запускает прогу, записывающую голос с микрофона, потом этот файл надо переименовать?
а почему бы этой проге не указать сразу название файла?
что-то какие-то сложные и ненужные действия пытаетесь навесить (на диктора)

xydo ★★
()
Ответ на: комментарий от xydo

Потому что прога такая =) В ней нет возможности указать название, под которым сохраняем файл. Софт, написанный учеными =)

kometa_triatlon
() автор топика
Ответ на: комментарий от kometa_triatlon

> Потому что прога такая =) В ней нет возможности указать название, под которым сохраняем файл. Софт, написанный учеными =)

Софт, написанный учеными =)

сорцы есть? Сделай, это раз плюнуть! Гораздо правильнее и, вероятно, проще.

name_no ★★
()
Ответ на: комментарий от Xenesz

> осталось бы только за появлением файлов следить, без вариантов.
Вот это как раз и не хорошо, так как следить надо по уму не за появлением файлов, а за фактом его закрытия. Не зря ж, к этим самым сетевым файлухам всякие костыли через rpc приворачивали.

Lumi ★★★★★
()
Ответ на: комментарий от kometa_triatlon

ученые написали программу для записи голоса с микрофона??
ОЛОЛО))

xydo ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.