在循环目录期间向数组添加filles

时间:2017-08-24 09:58:11

标签: arrays bash

这是我之前关于从循环目录中自动收集所选文件的问题的开发。 我的脚本在这里:

   #!/bin/bash
    server=$(pwd)
    results=${server}/results
    output=${server}/simulations

    date=$(date +"%m_%d_%Y")

    for sim in "$output"/* ; do
     if [[ -d $sim ]]; then
      simulation=$(basename "$sim")
      file=( "${sim}"/gromacs* )
      file_name=$(basename "${file}")
      (( ${#file[@]} == 1 )) && [[ -e $file ]] || {
        echo "ERROR: Exactly one file starting with 'gromacs' should exist" >&2
        exit 1
      }
      (cd "${sim}" && exec cp $file "${results}/${simulation}.${date}")
      echo "${file_name} from ${simulation} has been collected!"
     fi
    done

它在循环中创建一个数组并检查dirs中的重复文件:

file=( "${sim}"/gromacs* )
          file_name=$(basename "${file}")
          (( ${#file[@]} == 1 )) && [[ -e $file ]] || {
            echo "ERROR: Exactly one file starting with 'gromacs' should exist" >&2
            exit 1
          }

是否可以在循环外定义此数组,并在每次处理期间将$ file附加到现有数组?在循环完成时脚本结束时,我想打印整个数组$文件,其中包含已收集的文件列表。

谢谢!

1 个答案:

答案 0 :(得分:0)

是的,你可以这样做:

#!/bin/bash
declare -a my_array=()

for sim in $output"/* ; do
    ...
    ... #do some conditions
    my_array+=( "$file" )
done