![]() |
|
Модераторы: powerfox, ZeeLax |
![]()
|
|
| An123 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 17.10.2009 Репутация: нет Всего: нет |
Разработать сценарий для поддержки базы данных входящих документов
Документ представлен некоторым текстовым файлом. База данных - это отдельный каталог, в котором размещаются документы. Требуется -добавить документ в базу -просмотреть список документов -отобразить содержимое документов -получить объём в байтах документа Работа с системой с помощью меню и задании параметров, необходимых для выполнения соотв. действия. После выполнения действия пользователю опять предлагается выыбрать один из пунктов меню Завершение работы осуществляется посредством выбора Выход Bash я начал изучать недавно(точнее вчера) и получилось что то вроде этого - некоторые пункты совсем не реализованы:
|
|||
|
||||
| spin2 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 15.12.2005 Где: Москва-Одесса Репутация: 5 Всего: 31 |
А в чем вопрос?
-------------------- |
|||
|
||||
| An123 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 17.10.2009 Репутация: нет Всего: нет |
Вопрос в том как организовать это -отобразить содержимое документов
-получить объём в байтах документа |
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 26 Всего: 97 |
cat somefilename Это сложнее. Что именно нужно: сколько занимает вообще, или сколько занимает на диске? Если на диске, то можно использовать du. Тогда нужно либо парсить вывод, полученный с помощью "-h", либо думать о размере блока (без "-h" выдаётся размер в блоках). Если объём данных, то "wc -c somefile". |
|||
|
||||
| spin2 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 15.12.2005 Где: Москва-Одесса Репутация: 5 Всего: 31 |
powerfox, для файла и ls -l и потом cut вполне хватит, по-моему.
-------------------- |
|||
|
||||
| An123 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 17.10.2009 Репутация: нет Всего: нет |
Необходимо получить объём (в байтах) заданного документа
А про cat somefilename можно поподробнее |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: нет Всего: 10 |
Подробнее в
|
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 26 Всего: 97 |
Выше я написал, как это сделать ;) Конечно. |
|||
|
||||
| spin2 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 15.12.2005 Где: Москва-Одесса Репутация: 5 Всего: 31 |
An123, приведенный код тобой написан? Там же уже есть строчка
-------------------- |
|||
|
||||
| An123 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 17.10.2009 Репутация: нет Всего: нет |
А как можно добавить документ в базу ?
|
|||
|
||||
| BlackRu |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 431 Регистрация: 14.9.2009 Репутация: 2 Всего: 4 |
Что-то я не могу понять, почему после выполнения первой функции мы в конце остаемся в стартовой директории. Т.е. пользовательского перехода не происходит.
Или нужно перекурить read? Извиняюсь за оффтоп. Это сообщение отредактировал(а) BlackRu - 31.10.2009, 13:10 -------------------- Удалена администрацией форума |
|||
|
||||
| BlackRu |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 431 Регистрация: 14.9.2009 Репутация: 2 Всего: 4 |
Оно? Полный Брейк Данц в общем. Это сообщение отредактировал(а) BlackRu - 31.10.2009, 14:05 -------------------- Удалена администрацией форума |
|||
|
||||
| An123 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 17.10.2009 Репутация: нет Всего: нет |
BlackRu, спасибо большое
Только я не очень понял как происходит получение объёма в байтах Если не сложно, ты не мог бы этот кусок пояснить :
|
|||
|
||||
| BlackRu |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 431 Регистрация: 14.9.2009 Репутация: 2 Всего: 4 |
Это твой кусок кода. Я не очень понимаю, почему так сделано. И кажется, он некорректно работает, каждый раз перезаписывая то ли, счетчик, то ли значение true в файл, у меня так во всяком случае. Мне кажется стоит выкинуть цикл, т.е.
Если нужно сделать проверку ввода, то лучше покурить насчет аналога file exist - такая фича есть в php, вероятно есть и в bash... что делает -e? - этот ключ/оператор/хз? я не понял, поясни.
Эта функция, наскоро написанная, выводит информация о файле, там права на запись, время, размер и т.д. Если тебе надо отдельно вывести только байты, это можно сделать посредство конвеера, например использовать awk и grep, если они есть в системе, хотя есть команда size. Вариантов, много. Но есть самый простой способ - использовать du
Или так.
Это сообщение отредактировал(а) BlackRu - 31.10.2009, 17:34 -------------------- Удалена администрацией форума |
||||||||||
|
|||||||||||
| An123 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 17.10.2009 Репутация: нет Всего: нет |
Вот эту часть позаимствовал - так что не исключено есть косяки А вообще как правило требуется сделать проверку ввода, если в задании об этом ничего не сказано? Вот эта строка как работает
5 - это что? |
||||
|
|||||
| BlackRu |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 431 Регистрация: 14.9.2009 Репутация: 2 Всего: 4 |
Это и есть конвеер:
конвеер Про awk можно посмотреть Википедии. Можно почитать до полного просветления: Advanced bash script guide Как зациклить скрипт? Я не берусь рассматривать это с точки зрения православного программирования, но вполне идентификатор выполнения функции можно воткнуть в саму функцию
но можно зациклить сам скрипт, так как кнопка выход все равно есть, воткнув вместо INFO имя скрипта, по которому он вызывается. Это может быть не очень правильно (так как порождается много процессов), но теоретически не должно вызвать проблем. Все зависит от целей. Можно сделать несколько отдельных скриптов и перемещаться между ними, корректно завершая предыдущие. Теперь мне поясните, пожалуйста, про -e. Что это? Это сообщение отредактировал(а) BlackRu - 15.11.2009, 04:11 -------------------- Удалена администрацией форума |
|||
|
||||
| An123 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 17.10.2009 Репутация: нет Всего: нет |
Спасибо за развернутый ответ
про -e если честно объяснить сложно поскольку эта реализации была самым наглым образом позаимствована из другой проги |
|||
|
||||
| BlackRu |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 431 Регистрация: 14.9.2009 Репутация: 2 Всего: 4 |
А что не так со ссылкой на конвеер?
Все верно -e = exist. Мне не приходилось пользоваться. Еще курить man test И мне тоже. А проверка наличия файла тогда так:
Это сообщение отредактировал(а) BlackRu - 31.10.2009, 22:59 -------------------- Удалена администрацией форума |
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 26 Всего: 97 |
||||
|
||||
| BlackRu |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 431 Регистрация: 14.9.2009 Репутация: 2 Всего: 4 |
Хотя нет, не особенно процессы плодятся. Тогда можно так:
Была еще функция return но не могу вспомнить было ли это в Bash Все понял, где ты взял этот пример, но там четко сказано: # if no 'break' here, keeps looping forever. В общем удали break в конце и будешь счастлив. P.S. Да, если проблема была решена, просьба - пометить вопрос как решенный. Это сообщение отредактировал(а) BlackRu - 1.11.2009, 18:17 -------------------- Удалена администрацией форума |
|||
|
||||
![]()
|
| Правила форума "Linux/UNIX: Oбщие вопросы" | |
|
|
В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу). В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим. Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |