原文出處
在 linux 下,不管你是啟動乙個桌面程式也好,還是在控制台下執行命令,所有的程式在結束時,都會返回乙個數字值,這個值叫做返回值,或者稱為錯誤號 ( error number )。
在控制台下,有乙個特殊的環境變數
$?,儲存著前乙個程式的返回值,我們可以試試:
$ ls *.png
diagram1.png eqn.png
peazip.png
eqn4.png
mandelbrot.png x2.png
$echo $?0
先隨便執行個命令,比如像上面的 ls 某些檔案,然後通過 echo $?,列印 $? 的值~
我們發現返回值是 0,這是什麼意思呢?
只要返回值是 0,就代表程式執行成功了~
也就是說,如果 $? 變數的值不是 0 的話,就表示上乙個命令在執行的過程中出錯了。我們可以試著 ls 乙個不存在的檔案:
$ ls linuxgem
ls: 無法訪問 linuxgem: 沒有那個檔案或目錄
$ echo $?2
這樣,對於某些列印出一堆不熟悉的英文資訊的命令,可以方便的看出它是否成功執行結束。
不過,每次都 echo $? 一下太累了,沒關係,你可以把 $? 放在提示符裡去:
galeki@localhost ~ $ export ps1="[\$?]$"
[0]galeki@localhost ~ $
export ps1="[\$?]$" 這個命令把 $? 的值放在的提示符的最前面,這樣每次執行完命令,這個值都會自動更新,這下就一目了然了~
那麼如果返回的值不是 0,我們要怎麼知道是那裡出錯了呢? 大多數的程式出錯都會給出提示,如果沒有提示的話,可以用
perror
這個程式來檢視錯誤的資訊,比如返回值是 2,我們可以執行:
$ perror 2
os error code
2: no such file or directory
這樣就清楚了,原來是檔案不存在~
錯誤對照表:
"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 system call"
"os error code
5: input/output error"
"os error code
6: no such device or address"
"os error code
7: argument list too long"
"os error code
8: exec format error"
"os error code
Linux命令的返回值
在 linux 下,不管你是啟動乙個桌面程式也好,還是在控制台下執行命令,所有的程式在結束時,都會返回乙個數字值,這個值叫做返回值,或者稱為錯誤號 error number 在控制台下,有乙個特殊的環境變數 儲存著前乙個程式的返回值,我們可以試試 ls png diagram1.png eqn.pn...
命令返回值
在powershell下,上一條命令的返回值通過 lastexitcode 得出,如xcopy,robocopy等的返回值。在cmd下,上一條命令的返回值通過 errorlevel 得出 xcopy 的退出碼 0 檔案複製沒有錯誤。1 沒有找到要複製的檔案。2 使用者按 ctrl c 終止了 xco...
linux指令碼返回值
在 linux 下,不管你是啟動乙個桌面程式也好,還是在控制台下執行命令,所有的程式在結束時,都會返回乙個數字值,這個值叫做返回值,或者稱為錯誤號 error number 在控制台下,有乙個特殊的環境變數 儲存著前乙個程式的返回值,我們可以試試 ls png diagram1.png eqn.pn...