Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с bashom! заходим в тему=) 
:(
    Опции темы
Kaskad
  Дата 30.5.2005, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 24.9.2004

Репутация: нет
Всего: 3



Никак не могу написать командны файл, отцы-юниксойды, помогите!

Задание: Сравнение указанного файла со всеми другими файлами, имеющие такой же суффикс, с удалением совпадающих файов.


Намутил вот, что:
Код

#! /bin/sh
if [ -e $1 ]
then 
  suf=`echo $1 | cut -f 2 -d.`
  fail=`ls *.$suf | grep -v $1`
  echo $fail
  for f in $fail
  do
    if [ -e $f ] & `cmp -s $1 $f`
    then 
      rm $f
    fi
  done
else
  echo Fail otsutstvuet
fi
exit 0


Выдаёт ошибку! smile

Это сообщение отредактировал(а) Kaskad - 30.5.2005, 20:34


--------------------
Well come to America!
PM MAIL   Вверх
Шмель
Дата 31.5.2005, 04:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 16.4.2004

Репутация: 7
Всего: 18



Вот что, уважаемый... ты бы хоть приводил, какие ошибки выдаются... ну это так.. к слову..
решение:
Код

#! /bin/sh
if [ -e $1 ]
then
  suf=`echo $1 | cut -f 2 -d.`
  echo "suf is $suf"
#  fail=`ls "*\.$suf" | grep -v $1`
  fail=`find ./ -maxdepth 1 -name "*\.$suf" | grep -v $1`
  echo $fail

  for f in $fail
  do
    if [ -e $f ] & `cmp -s $1 $f`
    then
      rm $f
    fi
  done
else
  echo Fail otsutstvuet
fi
exit 0

--------------------
будешь на Земле - заходи
PM MAIL ICQ   Вверх
Kaskad
  Дата 31.5.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 24.9.2004

Репутация: нет
Всего: 3



Шмель, огромное спасибо!
Цитата
ты бы хоть приводил, какие ошибки выдаются

В следующий раз учту. smile

А что это такое:
Код

fail=`find ./ -maxdepth 1 -name "*\.$suf" | grep -v $1`


Что это такое? Можешь обьяснить подробно какие параметры и ключи, что значат?

Это сообщение отредактировал(а) Kaskad - 31.5.2005, 14:55


--------------------
Well come to America!
PM MAIL   Вверх
Шмель
Дата 31.5.2005, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 16.4.2004

Репутация: 7
Всего: 18



а ты напиши в терминале man find - там всё подробненько написано smile
еще есть такой сайт - www.opennet.ru. Там кучи полезной информации + очень много манов, значительная часть которых - на русском языке.
Код
fail=`find ./ -maxdepth 1 -name "*\.$suf"

find короче говоря, ищет файлы в каталогах (нетрудно догадаться)
первый параметр: ./ - каталог, откуда начинать искать
второй параметр: -maxdepth 1 - на сколько уровней спускаться в подкаталоге (в нашем случае - только в текущем)
третий параметр: -name *\.$suf - паттерн, по которому ищется файлик
ну вот и всё, остальное - в мане
--------------------
будешь на Земле - заходи
PM MAIL ICQ   Вверх
Kaskad
  Дата 1.6.2005, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 24.9.2004

Репутация: нет
Всего: 3



Ааааааааааа!! Не работает!!!

Цитата
echo "suf is $suf"

Выводит на экран:
Цитата
echo $1 | cut -f 2 -d.`

а на это
Цитата

  echo $fail


выводит
Цитата
find ./ -maxdepth 1 -name "*\.$suf" | grep -v $1


Может, я не так запускаю? Как правильно запустить командный файл? smile Или в чём-нибудь другом ошибка?

Это сообщение отредактировал(а) Kaskad - 1.6.2005, 16:33


--------------------
Well come to America!
PM MAIL   Вверх
Шмель
Дата 1.6.2005, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 16.4.2004

Репутация: 7
Всего: 18



Тихо. Не кричи. Щас разберемся.
Попробуй поменять все обратные кавычки (`что-то`) на такую конструкцию: $(что-то)
Но у меня и так работает на ура... завтра посмотрю, в чем проблема - щас просто негде
--------------------
будешь на Земле - заходи
PM MAIL ICQ   Вверх
Kaskad
Дата 3.6.2005, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 24.9.2004

Репутация: нет
Всего: 3



Цитата
Попробуй поменять

Поменял - заработало. Спасибо smile


--------------------
Well come to America!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0746 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.