有没有一种方法可以使嵌套循环具有可变的迭代次数

时间:2020-06-29 22:41:35

标签: shell loops nested-loops scp

我正试图从多个文件夹中提取一系列文件并将它们放到不同的服务器上,问题是每个文件夹都有不同数量的包含我想要的文件的子文件夹。

我尝试了使用描述范围的函数的嵌套循环的变体,但这似乎不起作用,因为它打印了for循环范围函数,并且在其周围放置$( FUNCTION )'似乎也不起作用。

到目前为止,这是我的代码:

for i in $(cat File_with_first_folder_names.txt)
    do  

for x in {1..$(test=$(du -hd1 ${i}/Folder/bins/ | wc -l) | echo "$((test - 1))")}
    do

    scp $i/Folder/bins/bin.${x}/genes.faa server:/path/to/destination/${i}_${x}_genes.faa

    done

done

这也不起作用:

for i in $(cat File_with_first_folder_names.txt)
    do  
    
    for x in $({1..$(test=$(du -hd1 ${i}/Folder/bins/ | wc -l) | echo "$((test - 1))")})
        do
    
        scp $i/Folder/bins/bin.${x}/genes.faa server:/path/to/destination/${i}_${x}_genes.faa
    
        done
    
done

1 个答案:

答案 0 :(得分:0)

我知道了。它要求使用eval来执行仅打印的for循环参数。因此,最终代码如下所示:

for i in $(cat File_with_first_folder_names.txt)
do


for x in $(eval echo "{1..$(test=$(du -hd1 ${i}/Folder/bins/ | wc -l) | echo "$((test - 1))")}")
    do

    scp $i/Folder/bins/bin.${x}/genes.faa server:/path/to/destination/${i}_${x}_genes.faa

    done

done