2017-04-06 62 views
0

我还没有解释这个问题,所以被误解为重复。如何每次执行一个Bash脚本多次并行使用不同的参数?

我想每次读取一个CSV文件中的N行并执行一个操作行(名称)的脚本。如何将N行作为参数发送到另一个脚本并并行执行?

该文件与40万行这样的CSV:

nombre,ape_paterno,ape_materno 
ALFREDO,AGUILAR,AGUILAR 
ANGEL,AGUILAR,AGUILAR 
CARLOS,AGUILAR,AGUILAR 
DANIEL,AGUILAR,AGUILAR 
EDUARDO,AGUILAR,AGUILAR 
ELIZABETH,AGUILAR,AGUILAR 
FERNANDO ,AGUILAR,AGUILAR 
FRANCISCA,AGUILAR,AGUILAR 
FRANCISCO ,AGUILAR,AGUILAR 
FRANCISCO JAVIER,AGUILAR,AGUILAR 
... 

我想是这样的:

{ 
read 
while IFS="," read $N lines 
do 
    sh ${DIR}/Downloader.sh $N-Lines-as-argument & 
done } < "$input" 
wait 

我从here尝试过的答案,但我的结果给出了空。

+0

这是一个重复的,你从任何与其他页面的尝试回答? – Inian

+0

你的bash版本是什么? – anubhava

+0

@Inian是的,我的输出为空。 – forkfork

回答

1

您可以在BASH使用这个脚本:

#!/bin/bash 

n=50 # number of line to read every time 

while read -r && arr=("$REPLY"); do 
    # read n-1 lines using a for loop 
    for ((i=1; i<n; i++)); do 
     read -r && arr+=("$REPLY") 
    done 
    # call your script using 50 element array as argument 
    bash ${DIR}/Downloader.sh "${arr[@]}" & 
done < file 
相关问题