| 
 
 
 
 Легенда:
  новое сообщение 
  закрытая нитка 
  новое сообщение 
  в закрытой нитке 
  старое сообщение   | 
Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
Новичкам также крайне полезно ознакомиться с данным документом.
|  |  |  |  |  | [Unix] :-))  14.11.03 14:39  Число просмотров: 1385 Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
 |  
| Ну тогда извини если обидел. Если из билета тогда понятно. =) А то я читаю и думаю - что за бред! Но боюсь что тут ничем помочь не смогу - не программер. |  | <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
 |  
| Ну тогда извини если обидел. Если из билета тогда понятно. =) А то я читаю и думаю - что за бред! Но боюсь что тут ничем помочь не смогу - не программер. |  
 
 
 |  |