如何在 bash 中检查失败的命令?

用户3142695

我需要通过bash脚本检查是否安装了kubernetes。如果不是,我开始我的设置程序。我认为最好检查是否kubectl cluster-info有输出。如何检查失败的命令?

if command kubectl cluster-info > /dev/null; then
    # sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
    # ...
fi
卡米尔·马乔罗夫斯基

sh兼容的 shell 中,不存在的命令的退出状态应该是127.

如果未找到命令,则退出状态应为127如果找到命令名称,但它不是可执行实用程序,则退出状态应为126

来源

command内建没有太大变化:

[…] 应返回以下退出值:

126
已找到指定的实用程序 [...],但无法调用。

127
命令实用程序中发生错误或找不到指定的实用程序 [...]。

来源

您的示例已修改:

command kubectl cluster-info >/dev/null 2>&1
if [ "$?" -eq 127 ]; then …

还有type

type工具应说明如何如果用作一个命令名每个参数会被解释。

来源

POSIX 没有指定输出的确切格式。退出状态仅用于区分错误和成功。目前尚不清楚是否成功找到提供的命令不存在。

但是在 Bash中毫无疑问:

如果找到所有名称,则返回状态为零,如果找不到任何名称,则返回状态为非零。

有一些有用的选项:

如果-t使用选项,type打印单个字是一个aliasfunctionbuiltinfilekeyword,如果名字是别名,壳的功能,外壳内置,磁盘文件,或壳保留字,分别。如果未找到名称,则不打印任何内容,并type返回失败状态。

如果使用该-p选项,则 type 要么返回将被执行的磁盘文件的名称,要么-t不返回任何内容file

通过检查type -t kubectl和/或的输出和退出状态type -p kubectl,您可以在kubectl 调用它的情况下讲述一些事情

不过,事先说查不到kubectl,作为一个命令一起使用时,会被解释为一个文件运行并不意味着它是 kubectl你需要的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

条件检查时如何在Bash中检查命令的标准输出?

来自分类Dev

如何在bash别名中扩展命令?

来自分类Dev

如何在gulp中运行bash命令?

来自分类Dev

如何在bash命令中嵌套引号

来自分类Dev

如何在bash别名中扩展命令?

来自分类Dev

如何在bash脚本中运行命令?

来自分类Dev

如何在bash中安装“新”命令?

来自分类Dev

如何在bash中创建命令?

来自分类Dev

如何在Bash中掩盖库存命令

来自分类Dev

如何在bash中对齐命令输出

来自分类Dev

如何在 bash 程序中运行命令?

来自分类Dev

如何在bash中的awk命令中使用bash变量

来自分类Dev

如何在bash中总结多个bash命令的结果?

来自分类Dev

如何在 bash 算术命令中嵌套辅助命令

来自分类Dev

Bash:如何在Bash中寻找鼠标

来自分类Dev

如何在bash中暂停bash

来自分类Dev

Bash检查mysql命令是否失败

来自分类Dev

如何在Bash中的多行命令中编辑前几行?

来自分类Dev

如何在单个命令中禁用bash中的别名?

来自分类Dev

如何在bash脚本中检查apt-get错误?

来自分类Dev

如何在bash脚本中检查apt-get错误?

来自分类Dev

Bash脚本:如何在目录中检查活动的sshfs挂载?

来自分类Dev

如何在bash中检查无限循环?

来自分类Dev

如何在bash中检查mpi代码是否成功?

来自分类Dev

如何获取失败的Bash命令的实际行号?

来自分类Dev

如何获取失败的Bash命令的实际行号?

来自分类Dev

如何在vim中映射long bash命令?

来自分类Dev

如何在Bash中编写常规命令记录功能

来自分类Dev

如何在bash中破坏tail -f命令