2016-11-04 55 views
1

我試圖從「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 

如果任何人有任何建議,我怎麼能解決這個問題,我會非常感激。我已經嘗試了幾個變化。理想情況下,我會通過循環運行多個命令,更改所有三個變量而不是兩個,併爲每個變量賦予兩個以上的可能值,但我會保持簡單直到它工作。

+2

請問您的腳本中使用DOS行結束(在這種情況下,'你\ r'沒有被識別爲預期的關鍵字)?我會注意到''bash' 4.4現在在這種情況下給出了一個更清晰的錯誤信息。 – chepner

回答

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