Bash故障排除:不是有效的标识符

use*_*689 2 variables bash loops vcftools

初学者在这里试图让管道在bash中运行.如果有人能看出为什么当我运行以下内容时,我会得到:

-bash: `$i': not a valid identifier,
Run Code Online (Sandbox Code Playgroud)

这将是非常有帮助的.如果还有其他错误,请告诉我

for $i in /home/regionstextfile; do tabix /sequences/human_variation/snps/genotypes.vcf.gz $i | vcftools --window-pi 10000 >> /home/Testgenomesdata/genomesregions.txt; done
Run Code Online (Sandbox Code Playgroud)

这个想法是针对regionstextfile(包含基因组坐标)中的每一行运行一个tabixvcf.bz文件中调用的程序,然后使用vcftools指定选项运行输出,然后将所有输出放入genomesregions.txt文件中.

Igo*_*bin 8

必须如此:

for i in `</home/regionstextfile`
do 
  tabix /sequences/human_variation/snps/genotypes.vcf.gz $i | vcftools --window-pi 10000 >> /home/Testgenomesdata/genomesregions.txt
done
Run Code Online (Sandbox Code Playgroud)

当你使用一个变量(例如为它赋值或者输出它,或者用变量本身做任何事情)时你不用写出它的名字$; 当你使用你写的变量的值时$.

编辑:

当区域名称包含空格但每个区域位于单独的行中时,您需要while:

cat /home/regionstextfile | while read i
do 
  tabix /sequences/human_variation/snps/genotypes.vcf.gz "$i" | vcftools --window-pi 10000 >> /home/Testgenomesdata/genomesregions.txt
done
Run Code Online (Sandbox Code Playgroud)