Как написать вложенный цикл bash с условием - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь написать здесь вложенный цикл bash.В каждом каталоге в моем рабочем каталоге у меня есть текстовые файлы, и я хочу создать новый каталог с именем «частота нуклеотидов» в каждом каталоге, если я прочитаю первый текстовый файл.Вот что я пробовал, но это не работает.

for d in */ ; do
    echo "My Directories: " ${d}
    for f in $d/*.txt; do
        echo "My File: " ${f}
        if [f = 1]
        then
            mkdir $d/nucleotide_frequency
        fi
    done
done

1 Ответ

0 голосов
/ 29 марта 2019

Вы были близки. Чего не хватало, так это вашего чека на текстовый файл.

Это:

if [f = 1]

Проверяет, равна ли функция или программа f числу 1.

Встроенная функция bash if имеет флаг -s, чтобы проверить, существует ли файл и имеет ли размер больше нуля.

for d in */
do
  echo "My Directories: ${d}"
  for f in "${d}"/*.txt
  do
    echo "My File: ${f}"
    # Let's make sure that the file exists and is not empty
    if [[ -s "${f}" ]]
    then
      mkdir "${d}"/nucleotide_frequency 2>/dev/null
      break
    fi
  done
done

Введение в if

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...