首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash疑难解答:不是有效的标识符

Bash疑难解答:不是有效的标识符
EN

Stack Overflow用户
提问于 2012-06-19 15:35:39
回答 2查看 12.5K关注 0票数 2

这里的初学者正在尝试在bash中使用管道。如果有人知道原因,当我运行以下命令时,我会得到:

代码语言:javascript
复制
-bash: `$i': not a valid identifier,

这将是非常有帮助的。另外,如果还有其他错误,请让我知道

代码语言:javascript
复制
for $i in /home/regionstextfile; do tabix /sequences/human_variation/snps/genotypes.vcf.gz $i | vcftools --window-pi 10000 >> /home/Testgenomesdata/genomesregions.txt; done

其思想是对于regionstextfile (包含基因组坐标)中的每一行,在vcf.bz文件中运行一个名为tabix的程序,然后使用输出运行带有指定选项的vcftools,然后将所有输出放入genomesregions.txt文件中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-19 15:37:56

肯定是这样的:

代码语言:javascript
复制
for i in `</home/regionstextfile`
do 
  tabix /sequences/human_variation/snps/genotypes.vcf.gz $i | vcftools --window-pi 10000 >> /home/Testgenomesdata/genomesregions.txt
done

当你使用一个变量(例如,给它赋值或导出它,或者对变量本身做任何事情)时,你写的是不带$的名称;当你使用一个变量的值时,你写的是$

编辑:

如果区域名称包含空格,但每个区域位于单独的行中,则需要while

代码语言:javascript
复制
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
票数 8
EN

Stack Overflow用户

发布于 2012-06-19 17:49:01

没有cat也是一样的:

代码语言:javascript
复制
while read i
do
  tabix /sequences/human_variation/snps/genotypes.vcf.gz "$i" | vcftools --window-pi 10000 >> /home/Testgenomesdata/genomesregions.txt
done < /home/regionstextfile

备注:除非<file.txt =‘’,否则无法工作

代码语言:javascript
复制
OLDIFS="$IFS"
IFS=''
for i in `</home/regionstextfile`
do
  tabix /sequences/human_variation/snps/genotypes.vcf.gz $i | vcftools --window-pi 10000 >> /home/Testgenomesdata/genomesregions.txt
done
IFS="$OLDIFS"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11096412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档