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