嵌套循环与命令行程序

时间:2016-11-04 15:26:06

标签: bash for-loop

我正在尝试从'plink1.9'程序中运行一个用于群体遗传学的命令,同时更改两个参数。

在下面的代码中,第一个参数i为1或100,第二个参数j为0.4或0.8。我希望这会生成四个不同的输出,每个输出都包含输出文件名中相应的输入参数值。

这是我的代码,它在“意外令牌附近'语法错误''''失败。

for i in 1 100
do
    for j in 0.4 0.8
        do
        plink --bfile myfile \
                --indep-pairwise ${i} 50 ${j} \
                --out myfile_${i}_50_${j}_indep
        done
done

如果有人对如何解决这个问题有任何建议,我会非常感激。我已经尝试了几种变体。理想情况下,我会通过循环运行多个命令,更改所有三个变量而不是两个变量,并且每个变量都有两个以上的可能值,但我会保持简单直到它起作用。

1 个答案:

答案 0 :(得分:1)

这可能是因为您使用的是非Bash的默认shell。

请注意,您可以使用GNU Parallel

来简化脚本
parallel plink --bfile myfile \
            --indep-pairwise {1} 50 {2} \
            --out myfile_{1}_50_{2}_indep ::: 1 100 ::: 0.4 0.8