在提示符而不是脚本中工作的命令行
A command line that works in a prompt and not in a script
这是确切的命令
bcftools norm -f /path/hg19/ucsc.hg19.fasta -c s ./user1.vcf -o ../fixed/user2.vcf
当我 运行 它直接在 shell 中时它工作正常。
当我将它放入 bash 脚本时,它失败了
错误消息来自 bcftools 本身
[main] Unrecognized command.
脚本以 ascii 编码:
#!/bin/bash
bcftools norm -f /path/hg19/ucsc.hg19.fasta -c s ./user1.vcf -o ../fixed/user2.vcf
所以 bcftools 在直接从提示中接收参数时接受参数,而不是在脚本中。就像提示符和脚本中的空格的解释方式不同
这是完整的错误消息吗?通常在 'Unrecognised command' 之后它会给出无法识别的命令。查看 C 源代码:
fprintf(stderr, "[E::%s] unrecognized command '%s'\n", __func__, argv[1]);
所以单引号内应该有一些东西——代码中的argv[1]
。
此消息在网络聊天中最常见的原因是某些命令在 bcftools
的早期版本中不可用。那么,您是否安装了多个版本的 bcftools
?
OP 的评论(以上)确认别名引用了早期版本。
这是确切的命令
bcftools norm -f /path/hg19/ucsc.hg19.fasta -c s ./user1.vcf -o ../fixed/user2.vcf
当我 运行 它直接在 shell 中时它工作正常。
当我将它放入 bash 脚本时,它失败了
错误消息来自 bcftools 本身
[main] Unrecognized command.
脚本以 ascii 编码:
#!/bin/bash
bcftools norm -f /path/hg19/ucsc.hg19.fasta -c s ./user1.vcf -o ../fixed/user2.vcf
所以 bcftools 在直接从提示中接收参数时接受参数,而不是在脚本中。就像提示符和脚本中的空格的解释方式不同
这是完整的错误消息吗?通常在 'Unrecognised command' 之后它会给出无法识别的命令。查看 C 源代码:
fprintf(stderr, "[E::%s] unrecognized command '%s'\n", __func__, argv[1]);
所以单引号内应该有一些东西——代码中的argv[1]
。
此消息在网络聊天中最常见的原因是某些命令在 bcftools
的早期版本中不可用。那么,您是否安装了多个版本的 bcftools
?
OP 的评论(以上)确认别名引用了早期版本。