Перейти к содержанию

написать shell процедуру


Рекомендуемые сообщения

болел во время лекции по теме. не прошу решать, прошу объяснить как это решать или какой мануал читать чтобы решить...

1) читает содержимое файла, имя которого вводится при исполнении процедуры

2) создает новый файл имя которого передпется в качестве параметра

3)выводит на экран каждые 6 секунд очередные две строки в обратном порядке

4) сортирует выведенные на экран строки по длине и записывает в новый файл

5) приводит с клавиатуры трижды слово end удаляет второй файл и завершает работу

Ссылка на комментарий
Поделиться на другие сайты

stupidstudent писал(а) Срд, 23 Ноябрь 2011 09:44

болел во время лекции по теме. не прошу решать, прошу объяснить как это решать или какой мануал читать чтобы решить...

Лучше проштудировать лекцию. Поможет и мануал - man sh (или man bash, если речь об этой оболочке). Кроме того есть много руководств. Поищите в гугле.

Цитата:

1) читает содержимое файла, имя которого вводится при исполнении процедуры

Если это файл, то считать строку из него в переменную $str можно

read srt < $filein.

Перед этим: read -p "Введите имя файла для чтения: " filein

Процедурой в Паскале называют подпрограмму, не возвращающую значения. На шелле пишут не процедуры, а СКРИПТЫ.

Цитата:

2) создает новый файл имя которого передпется в качестве параметра

Первый параметр запишется в переменнную $1. Напр. перенаправить вывод в файл

echo aaa > $1 или

{ основная часть программы } < $filein | sort > $1

создаст новый файл с именем $1 и отсортированным содержимым всего, что выводится в {...}

Цитата:

3)выводит на экран каждые 6 секунд очередные две строки в обратном порядке

Задержать выполнение на 6 секунд можно

sleep 6

Цитата:

4) сортирует выведенные на экран строки по длине и записывает в новый файл

Утилиты, которая сортирует строки по длине, я не знаю. Можете освоить awk. А то и просто дописать впереди строки ее длину (узнать длину строки $s1 можно ${#s1} ) а поcле сортировки по числу (sort -n) отбросить (напремер, cut -f 2-)

Цитата:

5) приводит с клавиатуры трижды слово end удаляет второй файл и завершает работу

Удалить файл можно прямо: rm filename.

В целом задание мне показалось не продуманным.

1) Очередные две строки в обратном порядке - это 2,1,4,3,6,5... или 6,5,4,3,2,1 ???

2) Зачем в конце ждать end если количество строк конечно и программа все равно завершится, выполнив работу.

3) Небольшая проблема в разделении потоков - вывод (в обратном порядке) на экран и, (сортированные) в файл. Чтобы не создавать лишних сущностей, стандартный поток я бы отправил программе sort и ее вывод в файл, а стандартный поток ошибок - на экран. Но, возможно, другие варианты подойдут лучше.

Программа у меня получилась в 12 строк. Пишите свой вариант.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...