Syntax 在shell脚本中使用多个for循环时出现语法错误

Syntax 在shell脚本中使用多个for循环时出现语法错误,syntax,for-loop,sh,Syntax,For Loop,Sh,我想在linux中执行以下练习。Impute2是基于命令行的软件。我想使用for循环自动更改其选项,但在**粗体**中抛出以下错误 对于每个**$chunk**,-int选项的范围是**$int1到$int2** 这意味着对于块34,int将从165752599到170752599(差值5000001),对于块35,int将从170752600到175752600,依此类推,直到最后一个块,即块49,其int将从240752614到245752614 for chunk in $(seq 34

我想在linux中执行以下练习。Impute2是基于命令行的软件。我想使用for循环自动更改其选项,但在**粗体**中抛出以下错误

对于每个**$chunk**,-int选项的范围是**$int1到$int2**

这意味着对于块34,int将从165752599到170752599(差值5000001),对于块35,int将从170752600到175752600,依此类推,直到最后一个块,即块49,其int将从240752614到245752614

for chunk in $(seq 34 49)
for int1 in $(seq 165752599 5000001 240752614) 
for int2 in $(seq 170752599 5000001 245752614) 
do ./impute2 -use_prephased_g -m map.txt -h hap.txt -l legend.txt \
    -known_haps_g knownhap.txt -strand_g chr1_pos_strand_new \
    -align_by_maf_g -int $int1 $int2 -Ne 20000 -iter 30 -burnin 10 \
    -k 80 -k_hap 500 -os 0 1 2 3 -o result.out -o_gz -r result.summary \
    -i resul.info 
done
done
done

**bash:在“**

的意外标记”附近出现语法错误。您有3个
用于
s,3个
完成
s,但只有一个
完成
。你需要更多的
do


即,a中x的
;b中y的do;执行z…

您有3个
执行
和3个
完成
但只有一个
执行
。你需要更多的
do


即,a中x的
;b中y的do;do for z…

for的
的正确语法是
for;do
一直以来,如果没有一个
do
,你就不能有一个
for
。粘贴代码后,你有没有检查过代码的格式?这是一堵无法阅读的混乱的大墙……是的,你似乎有3个要做的事和3个要做的事。这肯定是个问题,
for
的正确语法是
for;do
一直以来,如果没有一个
do
,你就不能有一个
for
。粘贴代码后,你有没有检查过代码的格式?这是一堵无法阅读的混乱的大墙……是的,你似乎有3个要做的事和3个要做的事。这肯定是个问题,因为这段代码工作不正常。这里,每个$chunk是34,35,36$int1和$int2应同时更改。因此,当$chunk=34时,则$int1=165752599和$int2=170752599。当$chunk=35时,则$int1=170752600和$int2=175752600。当$chunk=36时,则$int1=175752601和$int2=180752601。int1和int2的差值应始终为5000000。您的逻辑不正确。您不希望在…中使用块的
。。。;在……中为int1做准备。。。;在……中为int2做准备。您只需要一个for循环:
for chunk in。。。;do int1=$(…);int2=$(…)。。。;完成
此代码工作不正常。这里,每个$chunk是34,35,36$int1和$int2应同时更改。因此,当$chunk=34时,则$int1=165752599和$int2=170752599。当$chunk=35时,则$int1=170752600和$int2=175752600。当$chunk=36时,则$int1=175752601和$int2=180752601。int1和int2的差值应始终为5000000。您的逻辑不正确。您不希望在…中使用块的
。。。;在……中为int1做准备。。。;在……中为int2做准备。您只需要一个for循环:
for chunk in。。。;do int1=$(…);int2=$(…)。。。;完成