Сталкнулся с проблемкой, в Униксе надо создать командный файл который будет подсчитывать кол-во каталогов и кол-во файлов и выводыить чего больше:
f='find -type f|wc -l'
k='find -type d|wc -l'
if [ $f > $k ] then echo "File more the dictory" fi
if [ $f < $k ] then echo "Dictory more the File" fi else echo "f=d" fi
Ошибка выходит в 5 строке которой нет(ожидание конца файла)
29 октября 2009 в 11:04
FILES=`find . -type f | wc -l`
DIRS=`find . -type d | wc -l`
((DIRS–)) # не учитываем '.' – текущую директорию
# в принципе, if нам тут вообще не нужен =)
[ $FILES -gt $DIRS ] && echo "Files > Directories"
[ $FILES -lt $DIRS ] && echo "Directories > Files"
[ $FILES -eq $DIRS ] && echo "Files == Directories"
27 октября 2009 в 10:00
Во-первых нкавычки не те. Нужно было хоть вывести значения переменных чтоб посмотреть что получилось. Во-вторых в случае срабатывания первого условия всё равно будет выводится что равны потому что else второго условия удовлетворяет. В третьих не забывать точки с запятой ставить в конце списка условий и команд. и одинарные квадратные не очень подходят.
f=`find -type f|wc -l`
k=`find -type d|wc -l`
echo $f
echo $k
if [[ $f > $k ]]; then echo "File more then dictories";
elif [[ $f < $k ]]; then echo "Dictory more then files"; else echo "f=d"; fi
27 октября 2009 в 9:05
Внимательно прочитай документацию по тому, как выглядит синтаксис if..then..else в bash.