Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
Linux 如何知道unix命令执行是否成功_Linux_Shell_Unix_Vcftools_Bcftools - Fatal编程技术网

Linux 如何知道unix命令执行是否成功

Linux 如何知道unix命令执行是否成功,linux,shell,unix,vcftools,bcftools,Linux,Shell,Unix,Vcftools,Bcftools,我最近在命令行中尝试了一个bcftools命令(用于处理各种文件) 我尝试的命令如下所示 bcftools merge --force-samples -O z -o final.vcf.gz ethn.vcf.gz 但是,该命令正在运行,但合并需要很长时间。所以,我让系统通宵运行,让它运行 然而,当我醒来时,我看到系统由于电源耗尽而关闭 如何知道我在Unix/Linux终端中的最后一个命令是否成功 上面显示的命令只是一个示例。您甚至可以向我解释如何使用简单的gzip操作来检查这一点 虽然我确

我最近在命令行中尝试了一个
bcftools
命令(用于处理各种文件)

我尝试的命令如下所示

bcftools merge --force-samples -O z -o final.vcf.gz ethn.vcf.gz
但是,该命令正在运行,但合并需要很长时间。所以,我让系统通宵运行,让它运行

然而,当我醒来时,我看到系统由于电源耗尽而关闭

如何知道我在Unix/Linux终端中的最后一个命令是否成功

上面显示的命令只是一个示例。您甚至可以向我解释如何使用
简单的gzip操作来检查这一点

虽然我确实看到了
final.vcf.gz
,但我不能说该命令是成功的,因为只要命令开始运行,我就会看到这个文件被生成。所以,我不能相信这一点


有什么帮助吗?

如果是单行程序,您也可以尝试写入文件,如:

bcftools merge --force-samples -O z -o final.vcf.gz ethn.vcf.gz && date > done.txt

使用
echo$?
检查最后一个命令的返回值。按照惯例,
0
表示成功,任何其他值都是失败的,但请检查手册页以确保命令正确。嗨@kaylum-当我键入
echo$
时,我只得到
$
。我能知道我做的是否正确吗?你漏掉了一个问号。这是
echo$?
而不是
echo$
哇,是的,我得到
0
。但是,当我在命令屏幕中发出
history
命令时,我无法看到我执行的合并命令。“我可以知道为什么吗?”TheGreat:如果你担心你忘记马上打印状态码,你可以养成习惯,总是在同一行中写,即
yourcommand x y z;echo$?
您的命令x y z | | echo失败$?
。顺便说一句,您必须使用POSIX shell作为您的shell吗?如果可以使用bash或zsh,则可以将最新命令的退出代码显示为提示的一部分。当然,只有当命令确实通过退出代码发出失败信号时,所有这些策略才有帮助。不幸的是,情况并非总是如此。