LINUX.ORG.RU

История изменений

Исправление 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}"