参数长度太大。怎么把它搞砸了?

时间:2014-04-23 09:53:09

标签: bash shell scripting arguments command-line-arguments

我有这个python代码,它将采用文件名和偏移集(逗号分隔),并将读取偏移中定义的相应行。

do   
    python fileOffset.py /mnt/media1/file $offsets >> tmpfile
done

$offsets将提供逗号分隔的字符串,其中包含filepointers(12,123,121134)。这工作正常,直到我得到一个非常冗长的偏移字符串,这将导致参数列表太长错误。作为一个解决方案,我编写了以下代码,它将拆分偏移量并将fileOffset.py调用为一个偏移量。

IFS=', ' read -a array <<< $offsets
for element in "${array[@]}"
do 
    python fileOffset.py /mnt/media1/$file $element >> tmpfile
done

但这会使文件处理速度变慢。我怎么能让它更快?

1 个答案:

答案 0 :(得分:1)

您可以使用xargs

IFS=', ' xargs read -a array <<< $offset

但是,我正在使用@ FrederikPihil的评论:完全使用python,因为你已经在每次迭代时产生了一个python进程。