UNIX基于脚本参数执行并行卷曲

UNIX基于脚本参数执行并行卷曲,unix,curl,parallel-processing,arguments,Unix,Curl,Parallel Processing,Arguments,我必须以并行方式发送一些cURL请求。 一边是curl.sh脚本(出于安全原因,数据被隐藏): 因此,此脚本将被称为: $ curl.sh requestData outputFile 然后,在另一个parallel.sh脚本中,我有: #!/bin/bash MODE=$1 REQUEST= if [ "$MODE" != "" ] then if [ $MODE -eq 1 ] then REQUEST=requestFil

我必须以并行方式发送一些cURL请求。 一边是curl.sh脚本(出于安全原因,数据被隐藏):

因此,此脚本将被称为:

$ curl.sh requestData outputFile
然后,在另一个parallel.sh脚本中,我有:

#!/bin/bash
MODE=$1
REQUEST=

if [ "$MODE" != "" ]
then
        if [ $MODE -eq 1 ]
        then
                REQUEST=requestFileOne.xml
        fi
        if [ $MODE -eq 2 ]
        then
                REQUEST=requestFileTwo.xml
        fi
else
        echo "ERROR no valid parameter"
        echo "./parallel.sh 1|3"
        echo "  mode 1: send request 1x1"
        echo "  mode 3: send request 3x3"
fi

if [ "$REQUEST" != "" ]
then
        echo "START CURL PARALLEL for $REQUEST"

        time ./curl.sh $REQUEST ./out/out_1.xml & ./curl.sh $REQUEST ./out/out_2.xml &
        ./curl.sh $REQUEST ./out/out_3.xml & ./curl.sh $REQUEST ./out/out_4.xml &
        ./curl.sh $REQUEST ./out/out_5.xml & ./curl.sh $REQUEST ./out/out_6.xml

        wait
fi

echo "END CURL PARALLEL"
正如你所看到的,现在我知道了

$ ./parallel.sh 1
但是,如果我想更改并行调用的数量,我必须编辑parallel.sh脚本文件,我需要如下内容:

$ ./parallel.sh file number
其中{file:1 | 2}是与cURL一起使用的数据文件,{number:X}将是并行调用的数量

首先,我考虑在循环中构建并行执行命令

for i in 1..$2
do
   stringVar="$stringVar | ./curl.sh $REQUEST ./out/output_$i.xml"
done

for i in 1..$2
do
   result=`./curl.sh $REQUEST ./out/output_$i.xml`
done

for i in 1..$2
do
   ./curl.sh $REQUEST ./out/output_$i.xml
done
但是,很明显,这些循环都没有达到预期效果。 在第一个循环中,我试图将curls命令保存为String,所以稍后我将以String命令的形式运行String

有什么想法吗?
提前感谢。

您可以使用GNU并行:

seq 100 | parallel -j0 curl.sh file.xml output{}.xml
观看GNU Parallel的介绍视频,了解更多信息:

10秒安装:

wget -O - pi.dk/3 | bash

那使用什么呢?通过这种方式,您可以像
/parallel.sh-f file-n number那样执行它,并定义默认值。如果我知道必须调用cURL脚本多少次,那就太好了。但用户可以只使用一个呼叫(-n1)[非并行]、一对(-n2)、两对(-n4)等等。
wget -O - pi.dk/3 | bash