如何用条件编写嵌套的bash循环

问题描述 投票:0回答:1

我想在这里写一个嵌套的bash循环。在我的工作目录中的每个目录中,我都有文本文件,如果我读取第一个文本文件,我想在每个目录中创建一个名为`nucleotide frequency'的新目录。这是我尝试过的,但它不起作用。

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
bash shell unix
1个回答
0
投票

你很亲密缺少的是您检查文本文件。

这个:

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

Introduction to if

© www.soinside.com 2019 - 2024. All rights reserved.