Skip to content

Instantly share code, notes, and snippets.

@dzhulk
Created May 20, 2011 18:28
Show Gist options
  • Select an option

  • Save dzhulk/983491 to your computer and use it in GitHub Desktop.

Select an option

Save dzhulk/983491 to your computer and use it in GitHub Desktop.
Labs
#!/bin/bash
# Объявляется функция func, которя обходит
# католог, который передан в качестве аргумента,
# и показывает все файлы в нем и в его подкаталогах
func(){
for fn in `ls $1` # цикл по значениям которые возвращает комманда ls, $1 - это аргумент ф-и
do
if [ "$fn" != "." ] # Условие: если $fn не текущий каталог
then
file="$1/$fn" # присваиваем переменной file путь к файлу/папке
echo $file # выводим на экран
if [ -d "$file" -a ! -h "$file" ] # Условие: если $file каталог и он существует и не символическая ссылка
then # Тогда
func $file # Рекурсия. Ф-я вызывает сама себя с аргументом $file
fi
fi # Закрываем условия
done
return 1 # Ф-я возвращает 1, как статус успешного завершения
}
if [ -z "$1" ] # Если длинна аргумента равна 0
then
func `pwd` # тогда вызываем ф-ю func, аргумент ф-и будет текуший каталог из которога она запускается (результат рабтоты pwd)
elif [ -d "$1" ] # Если аргумент это директория
then
func "$1" # тогда передаем ее в func
else # В других случаях пишем "Error"
echo "Error!"
fi
exit 0 # Завершаем скрипт со статусом true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment