shell 命令返回值判断

简介: shell 命令返回值判断

Shell 命令返回值判断

文章目录

1.判断命令是否存在

1.1 优雅方法1

首先,检查命令是否有效的惯用方法直接在if语句中。

if command; then
    echo notify user OK >&2
else
    echo notify user FAIL >&2
    return -1
fi

(良好做法:使用>&2将消息发送给stderr。)

1.2 优雅方法2

将通用逻辑转移到共享函数中。

check() {
    local command=("$@")
    if "${command[@]}"; then
        echo notify user OK >&2
    else
        echo notify user FAIL >&2
        exit 1
    fi
}
check command1
check command2
check command3

1.3 优雅方法3

installed () {
        command -v "$1" >/dev/null 2>&1
}
if installed <command1>
then
       <command1>  xx
else
        <command1>  xxx
 fi

2. 返回错误退出

2.1 || exit 退出

command1 || exit
command2 || exit
command3 || exit

2.2 bash -e

$  bash -e xx.sh
#!/bin/bash -e xx.sh
command1
command2
command3

2.3 set -e

$ bash xx.sh 
#!/bin/bash
set -e 
command1
command2
command3

3. 返回错误提示

3.1 一般方法

方法1

if do some command; then
    echo notify user OK
else
    echo notify user fail
    exit 255  # exit code must be unsigned short
fi

方法2

do some command
if [ $? -eq 0 ]; then
    echo notify user OK
else
    echo notify user FAIL
    return -1
fi

3.2 优雅方法

方法1

die() {
    local message=$1
    echo "$message" >&2
    exit 1
}
command1 || die 'command1 failed'
command2 || die 'command2 failed'
command3 || die 'command3 failed'

方法2(推荐

warn () {
  echo "$@" >&2
}
die () {
  status="$1"
  shift
  warn "$@"
  exit "$status"
}
do some command && echo notify user OK || die 255 Notify user fail


相关文章
|
1月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
60 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
1月前
|
Shell 知识图谱
Shell printf 命令
10月更文挑战第3天
17 1
|
1月前
|
Unix Shell Linux
常见的shell命令
shell常用命令
37 11
|
2月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
2月前
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
39 5
|
1月前
|
Shell PHP
Shell echo命令
10月更文挑战第3天
20 0
|
1月前
|
JSON Java Shell
Dockerfile中RUN、CMD、ENTRYPOINT、SHELL命令的区别
理解这些指令的差异和应用场景,有助于构建高效、灵活且易于管理的Docker镜像。在实际应用中,根据需要选择合适的指令,可以有效地控制镜像构建和容器运行的行为。
130 0
|
1月前
|
SQL Shell 数据库
在TDengine容器中创建初始化数据库的Shell命令实例
以上就是在Docker容器环境中部署并初始化TDengine数据库的全过程,希望对你有所帮助。
53 0
|
3月前
|
分布式计算 资源调度 Hadoop
Hadoop入门基础(五):Hadoop 常用 Shell 命令一网打尽,提升你的大数据技能!
Hadoop入门基础(五):Hadoop 常用 Shell 命令一网打尽,提升你的大数据技能!
|
3月前
|
缓存 Shell Linux
在Linux中,bash shell 中的 hash 命令有什么作用?
在Linux中,bash shell 中的 hash 命令有什么作用?