在提示符而不是脚本中工作的命令行

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 的评论(以上)确认别名引用了早期版本。