информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





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

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

Удачи.
<programming>
[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-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach