информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsАтака на InternetЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Unix] Помогите найти ошибку в скрипте 14.11.03 10:32  
Автор: mentat[bugtraq.ru] <Александр> Статус: Elderman
Отредактировано 14.11.03 10:32  Количество правок: 1
<"чистая" ссылка>
Это работающий скрипт, но в нем есть логическая ошибка. ее надо найти

#!/bin/sh
# Walk Tree example
# Copyright (c) 2003 ASWL.RU
# $Id: walktree.sh,v 1.3 2003/11/12 21:44:53 proff Exp $

walkdir()
{
for dname in `ls $1`; do
if [ $1 = "/" ]; then
if [ ! -h $1$dname -a -d $1$dname ]; then
echo $1$dname;
walkdir "$1$dname";
fi
else
if [ ! -h $1/$dname -a -d $1/$dname ]; then
echo $1/$dname;
walkdir "$1/$dname";
fi
fi

done
}

[ $# -eq 0 ] &&
{
echo " `basename $0` usage:"
echo " `basename $0` dir-for-walk"
exit 1
}

walkdir $1;
[Unix] :-) 14.11.03 12:39  
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
<"чистая" ссылка>
> Это работающий скрипт, но в нем есть логическая ошибка. ее
> надо найти

Может я чего-то не понимаю - но ИМХО чтобы помочь найти ошибку в скрипте надо знать:
1. Что должен сделать скрипт при вводе параметра ХХХ
2. Что он реально делает при вводе параметра ХХХ

Удачи.
[Unix] :-) 14.11.03 12:58  
Автор: mentat[bugtraq.ru] <Александр> Статус: Elderman
<"чистая" ссылка>
> > Это работающий скрипт, но в нем есть логическая
> ошибка. ее
> > надо найти
>
> Может я чего-то не понимаю - но ИМХО чтобы помочь найти
> ошибку в скрипте надо знать:
> 1. Что должен сделать скрипт при вводе параметра ХХХ
> 2. Что он реально делает при вводе параметра ХХХ
>
> Удачи.
Этот скрипт вообщето показывает дерево каталогов
точнее все папки в директории указанные в параметрах запуска этого скрипта
т.е. напрмер bash-2.05a$ sh walktree.sh /home
jy gjrf;tn dct gfgrb b afqks d /home
Он покажет файлы и папки в /home
[Unix] :-) 14.11.03 15:06  
Автор: LLL <Алексей> Статус: Member
<"чистая" ссылка>
> Этот скрипт вообщето показывает дерево каталогов
> точнее все папки в директории указанные в параметрах
> запуска этого скрипта
> т.е. напрмер bash-2.05a$ sh walktree.sh /home
> jy gjrf;tn dct gfgrb b afqks d /home
> Он покажет файлы и папки в /home

Файлы он не покажет. А должен?

Вообще хотелось бы заметить, что у скрипта будут проблемы при наличии пробелов (и возможно еще каких-то символов) в именах, встретившихся при обходе или заданных аргументами. Каталоги, чьи имена начинаются с точки оно не посетит (хотя может это фича).
А наибольшее подозрение вызывает использование переменной dname для итерации по циклу с рекурсивным вызовом. В нормальных языках здесь понадобилась бы локальная переменная, а как поступает с экземплярами переменной sh при вызове функций, я навскидку не скажу, а мануалы сейчас читать об этом -- не моя задача.
[Unix] :-) 14.11.03 19:26  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
> А наибольшее подозрение вызывает использование переменной
> dname для итерации по циклу с рекурсивным вызовом. В
> нормальных языках здесь понадобилась бы локальная
> переменная, а как поступает с экземплярами переменной sh
> при вызове функций, я навскидку не скажу, а мануалы сейчас
> читать об этом -- не моя задача.
В данном конкретном случае - не страшно, потому что при выходе наружу в переменную dname сразу записывается новое значение. А вообще, конечно, так делать действительно нехорошо.
[Unix] :-( 14.11.03 13:56  
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
<"чистая" ссылка>
> > Может я чего-то не понимаю - но ИМХО чтобы помочь
> найти
> > ошибку в скрипте надо знать:
> > 1. Что должен сделать скрипт при вводе параметра ХХХ
> > 2. Что он реально делает при вводе параметра ХХХ
> >
> > Удачи.
> Этот скрипт вообщето показывает дерево каталогов
> точнее все папки в директории указанные в параметрах
> запуска этого скрипта

Так дерево каталогов или все "папки в директории"?

> т.е. напрмер bash-2.05a$ sh walktree.sh /home
> jy gjrf;tn dct gfgrb b afqks d /home
> Он покажет файлы и папки в /home

А должен показывать что?
Блин. Дал же шаблон. Цифирька один, цифирька два. Что мешает заполнить?
Кстати, если это вопрос реально нужный а не разминка для мозгов - советую забить на /bin/sh и почитать `man find'
[Unix] это задача из института. изложил как в билете 14.11.03 14:02  
Автор: mentat[bugtraq.ru] <Александр> Статус: Elderman
<"чистая" ссылка>
[Unix] :-)) 14.11.03 14:39  
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
<"чистая" ссылка>
Ну тогда извини если обидел. Если из билета тогда понятно. =) А то я читаю и думаю - что за бред! Но боюсь что тут ничем помочь не смогу - не программер.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach