URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8728
[ Назад ]

Исходное сообщение
"подсчет входных файлов"

Отправлено medved_1408 , 13-Май-10 12:42 
Всем добрый день. Есть задание: Объединить содержимое входных текстовых файлов и записать результат в файл с именем "nechet", если количество входных файлов не четное и наоборот, если количество файлов четное записать результат объединения в файл с именем "chet". Я набрасала код, но выдает ошибку.
ls > f1
x=$(wc -l f1)
echo $x
if ($x%2==1)
then
cat *.txt >chet
echo "chet"
else
cat *.txt >nechet
echo "nechet"
fi

Содержание

Сообщения в этом обсуждении
"подсчет входных файлов"
Отправлено phpcoder , 13-Май-10 12:45 
>Я набрасала код, но выдает ошибку.

Какую?


>ls > f1
>x=$(wc -l f1)
>echo $x
>if ($x%2==1)

Наверное, здесь? Попробуйте заменить на if [ `expr $x % 2` -eq 1 ]

>then
>cat *.txt >chet
>echo "chet"
>else
>cat *.txt >nechet
>echo "nechet"
>fi


"подсчет входных файлов"
Отправлено phpcoder , 13-Май-10 12:55 
>[оверквотинг удален]
>x=$(wc -l f1)
>echo $x
>if ($x%2==1)
>then
>cat *.txt >chet
>echo "chet"
>else
>cat *.txt >nechet
>echo "nechet"
>fi

В вашем коде, похоже, есть ошибка: вы считаете все файлы, а добавляете содержимое только файлов, с расширением txt

Предлагаю свой вариант:

find . -type f -name '*.txt' |
(
rm -f {result,chet,nechet}
     CNT=0
     while read F; do
          CNT=$(expr $CNT + 1)
          cat "$F" >>result
     done
     if [ $(expr $CNT % 2) -eq 0 ]; then
         mv -vf result chet
     else
         mv -vf result nechet
     fi
)



"подсчет входных файлов"
Отправлено allez , 13-Май-10 13:01 
>[оверквотинг удален]
>x=$(wc -l f1)
>echo $x
>if ($x%2==1)
>then
>cat *.txt >chet
>echo "chet"
>else
>cat *.txt >nechet
>echo "nechet"
>fi

Ну что же, разжевывать и в ротик класть не стану, но подсказку дам. :-)


$ ls *.txt
de-en.txt  file.txt  log.txt

$ let x=$(ls *.txt | wc -l)%2; echo "x = $x"; if [ "$x" = "0" ]; then echo "Even"; else echo "Odd"; fi
x = 1
Odd


А теперь разбирайтесь в тех командах, которые я ввел в консоли - в них содержится почти полное
решение вашей задачки. Заодно попробуйте найти ошибку в своем скрипте. ;-)

P. S. Эх, phpcoder малость меня опередил и не умничая показал на ошибку пальцем. :-)


"подсчет входных файлов"
Отправлено medved_1408 , 13-Май-10 13:44 
Всем большое спасибо за помощь.