URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6033
[ Назад ]

Исходное сообщение
"Командная процедура UNIX"

Отправлено greTTa , 21-Дек-06 23:36 
Здравствуйте, О-о-о-очень нужна помощь, по UNIX-у было всего 2 практический занятия, и разобраться пока в нем полностью не получается. Очень нужно выполнить задание, иначе не видать сданной сессии как своих ушей :( Задание такое:
Разработать командную процедуру, сравнивающую файлы в 2-ух каталогах с эталонным файлом. Имена каталогов и эталонного файла задаются в качестве параметров процедуры. На экран выводятся несовпадающие строки файлов.
и еще вопрос, адреса каталогов нужно ведь полностью прописывать?
Жду помощи...

Содержание

Сообщения в этом обсуждении
"Командная процедура UNIX"
Отправлено ctax , 22-Дек-06 10:28 
>Здравствуйте, О-о-о-очень нужна помощь, по UNIX-у было всего 2 практический занятия, и
>разобраться пока в нем полностью не получается. Очень нужно выполнить задание,
>иначе не видать сданной сессии как своих ушей :( Задание такое:
>
>Разработать командную процедуру, сравнивающую файлы в 2-ух каталогах с эталонным файлом. Имена
>каталогов и эталонного файла задаются в качестве параметров процедуры. На экран
>выводятся несовпадающие строки файлов.
>и еще вопрос, адреса каталогов нужно ведь полностью прописывать?
>Жду помощи...


shell какой?


"Командная процедура UNIX"
Отправлено greTTa , 22-Дек-06 14:50 
Основным интерпретатором считаем sh, для записи командных процедур Unix.

"Командная процедура UNIX"
Отправлено ctax , 25-Дек-06 11:08 
#!/bin/sh
standart=$1
shift
until [ -z "$1" ]
do
    for FILE in `ls $1`
    do
        if [ -f $1/$FILE ]
        then
        echo "$1/$FILE"
        echo "`diff $standart $1/$FILE`"
        fi
    done
shift
done

Запишите это в файл(например cmd), сделайте ему chmod +x cmd
Запускается так ./cmd standart DIR1 DIR2 DIR3
standart - это file-эталон
DIR* папки в которых лежат файлы для сравнения (их может быть сколько угодно)

>и еще вопрос, адреса каталогов нужно ведь полностью прописывать?

можно и полностью, и относительно
см также man diff,man comm, можно в русских man'ах opennet.ru


"Командная процедура UNIX"
Отправлено greTTa , 26-Дек-06 00:15 
>#!/bin/sh
>standart=$1
>shift
>until [ -z "$1" ]
>do
>    for FILE in `ls $1`
>    do
>        if [ -f $1/$FILE
>]
>        then
>        echo "$1/$FILE"
>        echo "`diff $standart $1/$FILE`"
>
>        fi
>    done
>shift
>done

О, спасибо! только вот что такое -z и -f ( -f $1/$FILE,  -z "$1" )....у меня таких операций не находит...и зацикливается


"Командная процедура UNIX"
Отправлено ctax , 26-Дек-06 10:44 
>что такое -z и -f ( -f $1/$FILE,
> -z "$1" )....у меня таких операций не находит...и зацикливается

-z - пустая строка
-f - строка является файлом

Что за система??
uname -a