自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

命令行返回值

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

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

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

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

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

$ go run main.go
exit status 1

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

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

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

Golang中可以調(diào)用 os.Exit() 方法設置返回狀態(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 使當前程序停止運行,返回給定的狀態(tài)碼。
// 按照慣例,0表示成功,非0表示錯誤。
// 程序立即停止運行;之后的defer函數(shù)不再被運行。
//
// 為了可移植性,狀態(tài)碼的范圍應該是[0,125]。

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

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

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命令公網(wǎng)IP

2021-09-09 16:45:07

HTTP命令Linux

2022-04-11 06:03:24

FdupesLinux命令行工具

2021-11-28 22:16:01

Go語言工具

2021-11-08 10:45:07

Python命令工具

2013-05-21 14:58:08

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

2013-11-15 09:43:15

JDK工具

2018-05-04 09:15:35

PythonPlumbum命令行

2019-08-27 10:32:01

Linux操作系統(tǒng)Windows

2010-06-01 15:16:36

Zabbix使用
點贊
收藏

51CTO技術棧公眾號