Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如果elif else多选项错误_Bash_If Statement - Fatal编程技术网

Bash 如果elif else多选项错误

Bash 如果elif else多选项错误,bash,if-statement,Bash,If Statement,我有一个.ini文件,其中一个选项是: [衰减] ;确定是否检查单核苷酸多态性的LD衰减 ;“0”为假(否),“1”仅适用于GBS,“2”仅适用于SoySNP50K,“3”仅适用于合并,“4”适用于所有(GBS、SoySNP50K和合并) 衰减=1 对于第69行、第72行、第80行、第88行和第96行(基本上是任何有if或elif语句的地方),我不断得到以下错误: [::应为整数表达式 很明显,我忽略了一些东西,因为我在过去成功地与if、elif和其他人合作过,所以任何能够发现故障的人都会非常感

我有一个.ini文件,其中一个选项是: [衰减] ;确定是否检查单核苷酸多态性的LD衰减 ;“0”为假(否),“1”仅适用于GBS,“2”仅适用于SoySNP50K,“3”仅适用于合并,“4”适用于所有(GBS、SoySNP50K和合并) 衰减=1

对于第69行、第72行、第80行、第88行和第96行(基本上是任何有if或elif语句的地方),我不断得到以下错误: [::应为整数表达式

很明显,我忽略了一些东西,因为我在过去成功地与if、elif和其他人合作过,所以任何能够发现故障的人都会非常感激。 谢谢

!/bin/bash
#################################################
#                                               #
#必须创建一个基本目录,并#
#配置文件必须放在那里#
#                                               #
#################################################
#检查是否提供了配置文件
如果[$#-ne 1];那么#如果参数的数量不同于1
echo-e“用法:运行_pipeline_cfg.sh”#打印错误消息
退出1#停止脚本执行
fi
#解析ini文件中的信息
ini=$(读链接-m“$1”)

source考虑将
elsif
链更改为
case
语句。它可以避免测试需要整数参数,而且更清晰、更容易扩展:

case $decay in
  0)
    printf "LD decay rates not calculated" | tee -a $logs/log.txt;
    ;;

  1)
    #perform LD decay calculation for GBS only
    zcat $imputed/GBS_MAF0.01.vcf.gz > $LDdecay/GBS_MAF0.01.vcf
    plink --vcf $LDdecay/GBS_MAF0.01.vcf --r2 --ld-window 10000000 --ld-window-kb 10000 --ld-window-r2 0 --output $LDdecay/GBS_LD_decay
    rm $LDdecay/GBS_MAF0.01.vcf

    printf "LD decay for GBS dataset completed" | tee -a $logs/log.txt
    ;;

  2)
    #perform LD decay calculation for microarray only
    zcat $imputed/microarray_MAF0.01.vcf.gz > $LDdecay/microarray_MAF0.01.vcf
    plink --vcf $LDdecay/microarray_MAF0.01.vcf --r2 --ld-window 10000000 --ld-window-kb 10000 --ld-window-r2 0 --output $LDdecay/microarray_LD_decay
    rm $LDdecay/microarray_MAF0.01.vcf

    printf "LD decay for microarray dataset completed" | tee -a $logs/log.txt
    ;;

  3)
    #perform LD decay for Merged dataset only
    zcat $imputed/Integrated_MAF0.01_sorted.vcf.gz > $LDdecay/Integrated_MAF0.01.vcf
    plink --vcf $LDdecay/Integrated_MAF0.01.vcf --r2 --ld-window 10000000 --ld-window-kb 10000 --ld-window-r2 0 --output $LDdecay/Integrated_LD_decay
    rm $LDdecay/Integrated_MAF0.01.vcf

    printf "LD decay calculation for Integrated dataset complete" | tee -a $logs/log.txt
    ;;

  4)
    #perform LD decay for Merged, GBS and SoySNP50K datasets
    zcat $imputed/Integrated_MAF0.01_sorted.vcf.gz > $LDdecay/Integrated_MAF0.01.vcf
    plink --vcf $LDdecay/Integrated_MAF0.01.vcf --r2 --ld-window 10000000 --ld-window-kb 10000 --ld-window-r2 0 --output $LDdecay/Integrated_LD_decay
    rm $LDdecay/Integrated_MAF0.01.vcf

    zcat $imputed/microarray_MAF0.01.vcf.gz > $LDdecay/microarray_MAF0.01.vcf
    plink --vcf $LDdecay/microarray_MAF0.01.vcf --r2 --ld-window 10000000 --ld-window-kb 10000 --ld-window-r2 0 --output $LDdecay/microarray_LD_decay
    rm $LDdecay/microarray_MAF0.01.vcf

    zcat $imputed/snp_imputed_GBS_MAF0.01.vcf.gz > $LDdecay/GBS_MAF0.01.vcf
    plink --vcf $LDdecay/GBS_MAF0.01.vcf --r2 --ld-window 10000000 --ld-window-kb 10000 --ld-window-r2 0 --output $LDdecay/GBS_LD_decay
    rm $LDdecay/GBS_MAF0.01.vcf

    printf "LD decay calculation completed for Integrated, GBS and SoySNP50K datasets completed" | tee -a $logs/log.txt
    ;;

  *)
    echo "Wrong LD Decay calculation setup"
    exit 1
    ;;
esac

请与我一起检查您的脚本。它不会给我任何错误您的
decay
变量未设置,这就是问题的原因。不确定您的意思。我的decay变量在我的.ini文件中设置为decay=1,当我运行脚本时,我将其作为:bash file.sh file.ini运行,这样脚本应该从ini fi中链接我的选项le,否?您可以在脚本开始时执行
set-o nounset
,以确保定义了
$decay
case $decay in
  0)
    printf "LD decay rates not calculated" | tee -a $logs/log.txt;
    ;;

  1)
    #perform LD decay calculation for GBS only
    zcat $imputed/GBS_MAF0.01.vcf.gz > $LDdecay/GBS_MAF0.01.vcf
    plink --vcf $LDdecay/GBS_MAF0.01.vcf --r2 --ld-window 10000000 --ld-window-kb 10000 --ld-window-r2 0 --output $LDdecay/GBS_LD_decay
    rm $LDdecay/GBS_MAF0.01.vcf

    printf "LD decay for GBS dataset completed" | tee -a $logs/log.txt
    ;;

  2)
    #perform LD decay calculation for microarray only
    zcat $imputed/microarray_MAF0.01.vcf.gz > $LDdecay/microarray_MAF0.01.vcf
    plink --vcf $LDdecay/microarray_MAF0.01.vcf --r2 --ld-window 10000000 --ld-window-kb 10000 --ld-window-r2 0 --output $LDdecay/microarray_LD_decay
    rm $LDdecay/microarray_MAF0.01.vcf

    printf "LD decay for microarray dataset completed" | tee -a $logs/log.txt
    ;;

  3)
    #perform LD decay for Merged dataset only
    zcat $imputed/Integrated_MAF0.01_sorted.vcf.gz > $LDdecay/Integrated_MAF0.01.vcf
    plink --vcf $LDdecay/Integrated_MAF0.01.vcf --r2 --ld-window 10000000 --ld-window-kb 10000 --ld-window-r2 0 --output $LDdecay/Integrated_LD_decay
    rm $LDdecay/Integrated_MAF0.01.vcf

    printf "LD decay calculation for Integrated dataset complete" | tee -a $logs/log.txt
    ;;

  4)
    #perform LD decay for Merged, GBS and SoySNP50K datasets
    zcat $imputed/Integrated_MAF0.01_sorted.vcf.gz > $LDdecay/Integrated_MAF0.01.vcf
    plink --vcf $LDdecay/Integrated_MAF0.01.vcf --r2 --ld-window 10000000 --ld-window-kb 10000 --ld-window-r2 0 --output $LDdecay/Integrated_LD_decay
    rm $LDdecay/Integrated_MAF0.01.vcf

    zcat $imputed/microarray_MAF0.01.vcf.gz > $LDdecay/microarray_MAF0.01.vcf
    plink --vcf $LDdecay/microarray_MAF0.01.vcf --r2 --ld-window 10000000 --ld-window-kb 10000 --ld-window-r2 0 --output $LDdecay/microarray_LD_decay
    rm $LDdecay/microarray_MAF0.01.vcf

    zcat $imputed/snp_imputed_GBS_MAF0.01.vcf.gz > $LDdecay/GBS_MAF0.01.vcf
    plink --vcf $LDdecay/GBS_MAF0.01.vcf --r2 --ld-window 10000000 --ld-window-kb 10000 --ld-window-r2 0 --output $LDdecay/GBS_LD_decay
    rm $LDdecay/GBS_MAF0.01.vcf

    printf "LD decay calculation completed for Integrated, GBS and SoySNP50K datasets completed" | tee -a $logs/log.txt
    ;;

  *)
    echo "Wrong LD Decay calculation setup"
    exit 1
    ;;
esac