> Это работающий скрипт, но в нем есть логическая ошибка. ее > надо найти
Может я чего-то не понимаю - но ИМХО чтобы помочь найти ошибку в скрипте надо знать:
1. Что должен сделать скрипт при вводе параметра ХХХ
2. Что он реально делает при вводе параметра ХХХ
Это работающий скрипт, но в нем есть логическая ошибка. ее надо найти
#!/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
> Это работающий скрипт, но в нем есть логическая ошибка. ее > надо найти
Может я чего-то не понимаю - но ИМХО чтобы помочь найти ошибку в скрипте надо знать:
1. Что должен сделать скрипт при вводе параметра ХХХ
2. Что он реально делает при вводе параметра ХХХ
> > Это работающий скрипт, но в нем есть логическая > ошибка. ее > > надо найти > > Может я чего-то не понимаю - но ИМХО чтобы помочь найти > ошибку в скрипте надо знать: > 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 при вызове функций, я навскидку не скажу, а мануалы сейчас читать об этом -- не моя задача.
> А наибольшее подозрение вызывает использование переменной > 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
Ну тогда извини если обидел. Если из билета тогда понятно. =) А то я читаю и думаю - что за бред! Но боюсь что тут ничем помочь не смогу - не программер.