Linux命令的返回值
在 Linux 下,不管你是啟動(dòng)一個(gè)桌面程序也好,還是在控制臺(tái)下運(yùn)行命令,所有的程序在結(jié)束時(shí),都會(huì)返回一個(gè)數(shù)字值,這個(gè)值叫做返回值,或者稱為錯(cuò)誤號(hào) ( Error Number )。
在控制臺(tái)下,有一個(gè)特殊的環(huán)境變量$?,保存著前一個(gè)程序的返回值,我們可以試試:
$ ls *.png Diagram1.png eqn.png peazip.png eqn4.png Mandelbrot.png x2.png $ echo $? 0
先隨便執(zhí)行個(gè)命令,比如像上面的 ls 某些文件,然后通過(guò) echo $?,打印 $? 的值~
我們發(fā)現(xiàn)返回值是 0,這是什么意思呢?
只要返回值是 0,就代表程序執(zhí)行成功了~
也就是說(shuō),如果 $? 變量的值不是 0 的話,就表示上一個(gè)命令在執(zhí)行的過(guò)程中出錯(cuò)了。我們可以試著 ls 一個(gè)不存在的文件:
$ ls linuxgem ls: 無(wú)法訪問(wèn) linuxgem: 沒(méi)有那個(gè)文件或目錄 $ echo $? 2
這樣,對(duì)于某些打印出一堆不熟悉的英文信息的命令,可以方便的看出它是否成功執(zhí)行結(jié)束。
不過(guò),每次都 echo $? 一下太累了,沒(méi)關(guān)系linux命令,你可以把 $? 放在提示符里去:
$ export PS1="[\$?]${PS1}" [0]test@test:$
這個(gè)命令前面沒(méi)加那個(gè)c:\也就是搜索路徑,這樣他就會(huì)以當(dāng)前目錄為搜索路徑,比如你這個(gè)bat你把他放在d:\test目錄下執(zhí)行,那么他就會(huì)把d:\test目錄和他下面的子目錄的全部exe文件列出來(lái)。求助在線自動(dòng)更新之后,為什么總是提示更新,怎么修改versioncdoe的值 如題,在網(wǎng)上找了代碼實(shí)際了在線更新,以及安裝,問(wèn)題是安裝了下次進(jìn)來(lái)還是提示要更新,調(diào)試的時(shí)候獲取manifest里面的版本號(hào)始終是初始的值,我現(xiàn)在的問(wèn)題是不知道這個(gè)要怎么更新,不是安裝的時(shí)候會(huì)自動(dòng)修改sd卡的信息嗎。這個(gè)在openssl官方網(wǎng)站上找到了,方法是禁用ipv6在openssl目錄下執(zhí)行下列命令perl configure vc-win32 -dopenssl_use_ipv6=0最終編譯動(dòng)態(tài)庫(kù)完成后,輸出都在out32dll目錄下:包括可執(zhí)行文件、兩個(gè)dll 和兩個(gè)lib文件: libeay32.dll, libeay32.lib, ssleay32.dll, ssleay32.lib,如果使用vs/vc編程只需按照下文的方法進(jìn)行即可,如果需要使用openssl命令,還需要在系統(tǒng)環(huán)境變量path中增加c:\openssl\out32dll路徑,因?yàn)閛penssl.exe就在該目錄下,聲明后可以直接在命令行中使用openssl命令。
那么如果返回的值不是 0,我們要怎么知道是那里出錯(cuò)了呢? 大多數(shù)的程序出錯(cuò)都會(huì)給出提示,如果沒(méi)有提示的話,可以用perror這個(gè)程序來(lái)查看錯(cuò)誤的信息linux命令,比如返回值是 2,我們可以運(yùn)行:
$ perror 2 OS error code 2: No such file or directory
這樣就清楚了,原來(lái)是文件不存在~
錯(cuò)誤對(duì)照表: