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,则可以将最新命令的退出代码显示为提示的一部分。当然,只有当命令确实通过退出代码发出失败信号时,所有这些策略才有帮助。不幸的是,情况并非总是如此。