Linux命令的返回值
在 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 $? 一下太累了,没关系linux命令,你可以把 $? 放在提示符里去:
$ export PS1="[\$?]${PS1}" [0]test@test:$
这个命令前面没加那个c:\也就是搜索路径,这样他就会以当前目录为搜索路径,比如你这个bat你把他放在d:\test目录下执行,那么他就会把d:\test目录和他下面的子目录的全部exe文件列出来。求助在线自动更新之后,为什么总是提示更新,怎么修改versioncdoe的值 如题,在网上找了代码实际了在线更新,以及安装,问题是安装了下次进来还是提示要更新,调试的时候获取manifest里面的版本号始终是初始的值,我现在的问题是不知道这个要怎么更新,不是安装的时候会自动修改sd卡的信息吗。这个在openssl官方网站上找到了,方法是禁用ipv6在openssl目录下执行下列命令perl configure vc-win32 -dopenssl_use_ipv6=0最终编译动态库完成后,输出都在out32dll目录下:包括可执行文件、两个dll 和两个lib文件: libeay32.dll, libeay32.lib, ssleay32.dll, ssleay32.lib,如果使用vs/vc编程只需按照下文的方法进行即可,如果需要使用openssl命令,还需要在系统环境变量path中增加c:\openssl\out32dll路径,因为openssl.exe就在该目录下,声明后可以直接在命令行中使用openssl命令。
那么如果返回的值不是 0,我们要怎么知道是那里出错了呢? 大多数的程序出错都会给出提示,如果没有提示的话,可以用perror这个程序来查看错误的信息linux命令,比如返回值是 2,我们可以运行:
$ perror 2 OS error code 2: No such file or directory
这样就清楚了,原来是文件不存在~
错误对照表: