2017-08-24 35 views
2

這是我之前關於從循環目錄中自動收集選定文件的問題的開發。 這裏我的腳本:在目錄循環期間向陣列添加filles

#!/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 

它創建循環中的數組,並檢查顯示目錄中的重複文件:

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

是否可以定義外循環這個數組,並追加$文件到每個處理過程中的現有數組?在循環結束時腳本結束時,我想用已收集文件的列表打印整個數組$文件。

謝謝!

+0

哪來你前面的問題? – 123

回答

0

是的,你可以做這樣的:

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

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