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

編寫命令行工具必備知識—Golang中獲取和返回狀態碼

開發 前端
當在程序中調用系統命令行命令時,可以根據返回值來知道命令執行的結果并執行不同的策略,所以編寫命令行工具時一定要返回對應的狀態碼。

命令行返回值

之前的文章《編寫命令行工具必備知識—Linux終端執行命令后的返回值》講了終端執行命令后會有對應的返回值,這一點非常重要。當在程序中調用系統命令行命令時,可以根據返回值來知道命令執行的結果并執行不同的策略,所以編寫命令行工具時一定要返回對應的狀態碼。

Golang中獲取調用系統命令狀態碼

golang的標準庫os/exec可以用于執行系統命令行命令,舉一個調用系統的cp命令的例子,代碼如下:

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

如果沒有copy成功,error信息會輸出執行命令的狀態碼。假如要copy的文件不存在,運行代碼后輸出如下:

$ go run main.go
exit status 1

其中錯誤信息 exit status 1 中的 1 就是執行命令后返回的狀態碼。

Golang編寫命令行程序如何返回狀態碼

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

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

// 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 使當前程序停止運行,返回給定的狀態碼。
// 按照慣例,0表示成功,非0表示錯誤。
// 程序立即停止運行;之后的defer函數不再被運行。
//
// 為了可移植性,狀態碼的范圍應該是[0,125]。

看個例子,假如程序檢測到操作系統是macOS時就停止運行,提示不支持當前系統并返回對應的狀態碼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")
}
責任編輯:姜華 來源: 今日頭條
相關推薦

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

工具代碼開發

2020-12-11 06:44:16

命令行工具開發

2023-06-09 07:45:29

Kuberneteskubectl

2021-08-17 09:35:26

Linux命令Nginx

2010-11-24 17:12:17

MySQL命令行

2013-12-09 14:29:13

OpenStack命令行工具API

2013-07-26 14:10:06

Linux命令行

2017-08-29 15:15:40

Linux命令公網IP

2021-09-09 16:45:07

HTTP命令Linux

2022-04-11 06:03:24

FdupesLinux命令行工具

2013-05-21 14:58:08

系統監視glances開源

2021-11-08 10:45:07

Python命令工具

2013-11-15 09:43:15

JDK工具

2018-05-04 09:15:35

PythonPlumbum命令行

2019-08-27 10:32:01

Linux操作系統Windows

2010-04-20 11:16:08

Unix操作系統

2010-04-09 16:36:54

Unix操作系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一二区 | 欧洲亚洲精品久久久久 | 精品一区二区在线看 | 国产 日韩 欧美 中文 在线播放 | 日本一区二区电影 | 精品免费国产一区二区三区四区 | 中文字幕成人免费视频 | 欧美日韩综合一区 | 一区中文字幕 | 久久99精品国产 | 九九久久久久久 | 免费啪啪 | 久久久久久美女 | 久久这里有精品 | 男女视频网站 | 久久久久久久久久久久91 | 99精品网站 | 久久精品视频网站 | 啪啪毛片 | 亚洲成人中文字幕 | 无码日韩精品一区二区免费 | 一区二区三区中文字幕 | 国产一级特黄真人毛片 | 国产丝袜人妖cd露出 | 国产剧情一区 | 国产精品毛片久久久久久久 | 久久激情视频 | av手机在线播放 | 久草网址| 中文字幕精品一区久久久久 | 99在线国产 | 91精品久久久久久久久中文字幕 | 中文字幕一区二区三区不卡在线 | 中国美女撒尿txxxxx视频 | 国产精品欧美一区二区 | 国户精品久久久久久久久久久不卡 | 欧美综合久久 | 久久精品免费 | 99久久精品免费看国产免费软件 | 国产精品亚洲第一区在线暖暖韩国 | 国产精品一区二区三区在线 |