История изменений
Исправление basarga, (текущая версия) :
https://www.linux.org.ru/help/markdown.md
Научись оформлять код. Никто не будет ломать глаза, люди просто не захотят тебе помогать.
if [ -d $i ]; then
Старайся использовать [[ и ]], вместо [ и ]. Это убережёт от ошибок в некоторых случаях. Подробности:https://www.opennet.ru/docs/RUS/bash_scripting_guide/x2565.html
cd $i
cat * >> ~/strk
cd ..
Забудь про «cd». Это лишнее движение. Засунь $i сразу в «cat» к шаблону. И у тебя шаблон не учитывает dot-файлы, это в рамках ТЗ?
if [ -d $i ]; then
cd $i
cat * >> ~/strk
cd ..
else
cat $i >> ~/stroki
Почему пишешь в два файла, «strk» и «stroki», а не в один? Зачем тебе вообще постоянно писать в файлы? Считай тут же через «wc» и плюсуй результат в переменную, а после цикла делай с этой переменной что хочешь.
И у тебя в ТЗ не определено, что будет, если в директории окажется вложенная директория? Её игнорировать или идти в рекурсию?
Пока примерно так:
#!/bin/bash
for i in $@
do
if [[ -d $i ]]; then
LINES_COUNT="$(($LINES_COUNT + $(cat $i/* | wc -l)))"
else
LINES_COUNT="$(($LINES_COUNT + $(cat /* | wc -l)))"
fi
done
echo "${LINES_COUNT}"
Исходная версия basarga, :
https://www.linux.org.ru/help/markdown.md
Научись оформлять код. Никто не будет ломать глаза, люди просто не захотят тебе помогать.
if [ -d $i ]; then
Старайся использовать [[ и ]], вместо [ и ]. Это убережёт от ошибок в некоторых случаях. Подробности:https://www.opennet.ru/docs/RUS/bash_scripting_guide/x2565.html
cd $i
cat * >> ~/strk
cd ..
Забудь про «cd». Это лишнее движение. Засунь $i сразу в «cat» к шаблону. И у тебя шаблон не учитывает dot-файлы, это в рамках ТЗ?
if [ -d $i ]; then
cd $i
cat * >> ~/strk
cd ..
else
cat $i >> ~/stroki
Почему пишешь в два файла, «strk» и «stroki», а не в один? Зачем тебе вообще постоянно писать в файлы? Считай тут же через «wc» и плюсуй результат в переменную, а после цикла делай с этой переменной что хочешь.
И у тебя в ТЗ не определено, что будет, если в директории окажется вложенная директори[я,и]? Её игнорировать или идти в рекурсию?
Пока примерно так:
#!/bin/bash
for i in $@
do
if [[ -d $i ]]; then
LINES_COUNT="$(($LINES_COUNT + $(cat $i/* | wc -l)))"
else
LINES_COUNT="$(($LINES_COUNT + $(cat /* | wc -l)))"
fi
done
echo "${LINES_COUNT}"