成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

編寫命令行工具必備知識(shí)—Golang中獲取和返回狀態(tài)碼

開發(fā) 前端
當(dāng)在程序中調(diào)用系統(tǒng)命令行命令時(shí),可以根據(jù)返回值來知道命令執(zhí)行的結(jié)果并執(zhí)行不同的策略,所以編寫命令行工具時(shí)一定要返回對(duì)應(yīng)的狀態(tài)碼。

命令行返回值

之前的文章《編寫命令行工具必備知識(shí)—Linux終端執(zhí)行命令后的返回值》講了終端執(zhí)行命令后會(huì)有對(duì)應(yīng)的返回值,這一點(diǎn)非常重要。當(dāng)在程序中調(diào)用系統(tǒng)命令行命令時(shí),可以根據(jù)返回值來知道命令執(zhí)行的結(jié)果并執(zhí)行不同的策略,所以編寫命令行工具時(shí)一定要返回對(duì)應(yīng)的狀態(tài)碼。

Golang中獲取調(diào)用系統(tǒng)命令狀態(tài)碼

golang的標(biāo)準(zhǔn)庫os/exec可以用于執(zhí)行系統(tǒng)命令行命令,舉一個(gè)調(diào)用系統(tǒng)的cp命令的例子,代碼如下:

err := exec.Command("cp", "./test.go", "../test/test.go").Run()
if err != nil {
println(err.Error())
}

如果沒有copy成功,error信息會(huì)輸出執(zhí)行命令的狀態(tài)碼。假如要copy的文件不存在,運(yùn)行代碼后輸出如下:

$ go run main.go
exit status 1

其中錯(cuò)誤信息 exit status 1 中的 1 就是執(zhí)行命令后返回的狀態(tài)碼。

Golang編寫命令行程序如何返回狀態(tài)碼

可能很多同學(xué)都寫過命令行工具,但知道給返回值的同學(xué)可能不多。沒有設(shè)置返回值的話默認(rèn)返回值就是0,也就意味著程序即使出錯(cuò),從返回值來看依然是執(zhí)行成功的,這樣就會(huì)帶來意想不到的問題。

Golang中可以調(diào)用 os.Exit() 方法設(shè)置返回狀態(tài)碼,先看下官方的注釋:

// Exit causes the current program to exit with the given status code.
// Conventionally, code zero indicates success, non-zero an error.
// The program terminates immediately; deferred functions are not run.
//
// For portability, the status code should be in the range [0, 125].

即:

// Exit 使當(dāng)前程序停止運(yùn)行,返回給定的狀態(tài)碼。
// 按照慣例,0表示成功,非0表示錯(cuò)誤。
// 程序立即停止運(yùn)行;之后的defer函數(shù)不再被運(yùn)行。
//
// 為了可移植性,狀態(tài)碼的范圍應(yīng)該是[0,125]。

看個(gè)例子,假如程序檢測(cè)到操作系統(tǒng)是macOS時(shí)就停止運(yùn)行,提示不支持當(dāng)前系統(tǒng)并返回對(duì)應(yīng)的狀態(tài)碼2:

package main

import (
"os"
"runtime"
)

func main() {
recode := 0
defer func() { os.Exit(recode) }()

goos := runtime.GOOS
if goos == "darwin" {
recode = 2
println("unsupported platform")
return
}
println("success")
}
責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2023-07-05 08:38:48

GolangGo語言

2011-01-18 19:11:26

Postfix命令行

2010-09-03 09:18:23

LinuxUNIX命令行

2020-12-10 16:16:08

工具代碼開發(fā)

2020-12-11 06:44:16

命令行工具開發(fā)

2023-06-09 07:45:29

Kuberneteskubectl

2021-08-17 09:35:26

Linux命令Nginx

2013-07-26 14:10:06

Linux命令行

2010-11-24 17:12:17

MySQL命令行

2013-12-09 14:29:13

OpenStack命令行工具API

2017-08-29 15:15:40

Linux命令公網(wǎng)IP

2021-09-09 16:45:07

HTTP命令Linux

2022-04-11 06:03:24

FdupesLinux命令行工具

2013-05-21 14:58:08

系統(tǒng)監(jiān)視glances開源

2021-11-08 10:45:07

Python命令工具

2010-04-20 11:16:08

Unix操作系統(tǒng)

2010-04-09 16:36:54

Unix操作系統(tǒng)

2024-09-29 13:25:56

2013-11-15 09:43:15

JDK工具

2018-05-04 09:15:35

PythonPlumbum命令行
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 91精品国产91久久久久久密臀 | 国产伦精品一区二区三区精品视频 | 国产一区高清 | 日韩av免费在线电影 | 激情 婷婷 | 亚洲精品一区中文字幕乱码 | 日本精品免费 | 91久久久久久久久久久久久 | 色花av| 久久中文字幕一区 | 色婷婷精品国产一区二区三区 | 国产一区二区在线看 | 欧美在线一区二区三区 | 欧美自拍网站 | 日本一区二区影视 | 欧美一区二区在线播放 | 亚洲成人a v| 中文字幕一区在线 | 国产色在线 | 91一区二区三区在线观看 | 亚洲成人av在线播放 | 久久亚洲国产 | 激情黄色在线观看 | 亚洲国产精品一区二区三区 | 国产激情偷乱视频一区二区三区 | 免费在线一区二区 | 在线免费观看黄色 | 黄色片免费看 | 国产精品乱码一区二区三区 | 免费亚洲一区二区 | 欧美日韩电影一区 | 国产a级毛片 | 久久久精品视频免费看 | 国产一区二区在线视频 | 亚洲高清一区二区三区 | 亚洲免费网 | 青久草视频 | 99爱在线 | 国产视频91在线 | 日韩一区二区黄色片 | 91小视频在线 |