这是我之前关于从循环目录中自动收集所选文件的问题的开发。 我的脚本在这里:
#!/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附加到现有数组?在循环完成时脚本结束时,我想打印整个数组$文件,其中包含已收集的文件列表。
谢谢!
答案 0 :(得分:0)
是的,你可以这样做:
#!/bin/bash
declare -a my_array=()
for sim in $output"/* ; do
...
... #do some conditions
my_array+=( "$file" )
done