shell命令返回值判断的方法实现

目录
  • 1.判断命令是否存在
    • 优雅方法1
    • 优雅方法2
    • 优雅方法3
  • 2.返回错误退出
    • 1.||exit退出
    • 2.使用-e
    • 3.set-e
  • 3.返回错误提示
    • 一般方法:
    • 优雅方法

1.判断命令是否存在

优雅方法1

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

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

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

优雅方法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

优雅方法3

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

2.返回错误退出

1.|| exit退出

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

2.使用-e

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

3.set -e

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

3.返回错误提示

一般方法:

方法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

优雅方法

方法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

到此这篇关于shell命令返回值判断的方法实现的文章就介绍到这了,更多相关shell命令返回值判断内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解决python 执行shell命令无法获取返回值的问题

    问题背景:利用python获取服务器中supervisor状态信息时发现未能获取到返回值. python获取执行shell命令后返回值得几种方式: # 1.os模块 ret = os.popen("supervisorctl status") ret_data = ret.read() # 2.subprocess模块 ret = subprocess.Popen('supervisorctl status',shell=True,stdout=subprocess.PIPE) out

  • go调用shell命令两种方式实现(有无返回值)

    目录 阻塞方式(需要执行结果) 适用于执行普通非阻塞shell命令,且需要shell标准输出的 非阻塞方式(不需要执行结果) 阻塞方式(需要执行结果) 主要用于执行shell命令,并且返回shell的标准输出 适用于执行普通非阻塞shell命令,且需要shell标准输出的 //阻塞式的执行外部shell命令的函数,等待执行完毕并返回标准输出 func exec_shell(s string) (string, error){ //函数返回一个*Cmd,用于使用给出的参数执行name指定的程序 c

  • shell命令返回值判断的方法实现

    目录 1.判断命令是否存在 优雅方法1 优雅方法2 优雅方法3 2.返回错误退出 1.||exit退出 2.使用-e 3.set-e 3.返回错误提示 一般方法: 优雅方法 1.判断命令是否存在 优雅方法1 首先,检查命令是否有效的惯用方法直接在if语句中. if command; then     echo notify user OK >&2 else     echo notify user FAIL >&2     return -1 fi (良好做法:使用>&a

  • Linux Shell函数返回值

    Shell函数返回值,一般有3种方式:return,argv,echo 1) return 语句 shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回. 示例: #!/bin/bash - function mytest() { echo "arg1 = $1" if [ $1 = "1" ] ;then return 1 else return 0 fi } echo echo "mytest 1" mytest 1 e

  • shell脚本返回值问题的解决

    如果学习过高级语言比如java和c语言等,此时你要是获取一个函数的返回值,直接在函数里面写上return即可,然后在函数执行时将返回结果赋值给某个变量即可.但是在shell脚本中限制较多,因此如果我们想实现这样的功能的话,稍微困难一些,本人在实践中做了一些该方面的实验,并做笔记分享. shell脚本的返回值可以使用return参数,但是return只能返回整数类型的值.因此实现比较复杂的功能的话shell脚本可能不太友好. 比如下面这个例子: #!/bin/bash function in_pa

  • Shell函数返回值方式

    目录 1.返回值的方式: 2.return和echo使用场景区别: 3.场景示例 1.返回值的方式: 方法一:return 方法二: echo 2.return和echo使用场景区别: (1).使用return返回值: 使用return返回值,只能返回1-255的整数 函数使用return返回值,通常只是用来供其他地方调用获取状态,因此通常仅返回0或1:0表示成功,1表示失败 (2).使用echo返回值: 使用echo可以返回任何字符串结果 通常用于返回数据,比如一个字符串值或者列表值 3.场景

  • python使用threading获取线程函数返回值的实现方法

    threading用于提供线程相关的操作,线程是应用程序中工作的最小单元.python当前版本的多线程库没有实现优先级.线程组,线程也不能被停止.暂停.恢复.中断. threading模块提供的类:  Thread, Lock, Rlock, Condition, [Bounded]Semaphore, Event, Timer, local. threading 模块提供的常用方法: threading.currentThread(): 返回当前的线程变量. threading.enumera

  • shell脚本返回值及其使用场景的实现

    应用场景 在一些应用中(比如Jenkins),嵌入了shell脚本,系统通过shell脚本的返回值来判断执行结果,如果返回值非0,则发生了执行错误,需要中止执行,这在使用单个命令时没有问题.然而,在shell (A)脚本又调用了shell脚本文件(B )时,当被调用的shell脚本B执行过程中发生了错误时,系统不会认为B有问题,而是继续往下执行.这样就会掩盖了问题. 解决 在被调用的shell脚本B中返回错误代码,当被调用的shell脚本B中发生错误时,捕捉该错误代码,然后返回该错误代码,这样系

  • python多任务及返回值的处理方法

    废话不多说,直接上代码! # coding:utf-8 from multiprocessing import Pool import time def keywords(title, content, top_n=5): print u'关键词提取...' print title, content, top_n time.sleep(3) return 0, [u"晴", u"多云"] def category(title, content): print u'文

  • linux命令返回值的含义解析

    linux命令执行后无论成功与否都有一个返回值: 如果为 0,则表示命令执行成功,其它值则表示错误, 具体的错误码含义如下: "OS error code 1: Operation not permitted" "OS error code 2: No such file or directory" "OS error code 3: No such process" "OS error code 4: Interrupted syst

  • ASP.NET Core Mvc中空返回值的处理方法详解

    前言 如果你是一个初学者开始学习 ASP.NET 或 ASP.NET MVC, 你可能并不知道什么是. net Framework和. net ore.不用担心!我建议您看下官方文档https://docs.microsoft.com/zh-cn/aspnet/index , 您可以轻松地看到比较和差异. .NET Core MVC在如何返回操作结果方面非常灵活的. 你可以返回一个实现IActionResult接口的对象, 比如我们熟知的ViewResult, FileResult, Conte

  • jquery ajax return没有返回值的解决方法

    大家先看一段简单的jquery ajax 返回值的js 复制代码 代码如下: function getReturnAjax{ $.ajax({ type:"POST", url:"ajax/userexist.aspx", data:"username="+vusername.value, success:function(msg){ if(msg=="ok"){ showtipex(vusername.id,"&l

随机推荐