LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 722|回复: 5

echo $?的疑惑。

[复制链接]
发表于 2003-10-6 13:25:18 | 显示全部楼层 |阅读模式
# ls -l
total 708
drwxrwxrwx  2 root  wheel     512  9 11 08:31 7770
-rwxr-xr-x  1 root  wheel    2860  8 30 21:44 XF86Config
-rw-r--r--  1 root  wheel    3344  9 27 18:58 back.jpg
-rwxr-xr-x  1 root  wheel     298  9 20 05:01 boot.ini
-rwx------  1 root  wheel     367 10  5 10:02 check
-rw-r--r--  1 root  wheel    6903  9 18 22:25 fs
lrwxr-xr-x  1 root  wheel       2  9 19 22:04 fs0 -> fs
-rw-r--r--  1 root  wheel    6903  9 19 22:05 fs00
lrwxr-xr-x  1 root  wheel      13  9 12 06:18 l -> /share/test/t
-rw-r--r--  1 root  wheel  671744  8 30 22:07 nmap-3.30.tar.bz2
-rw-r--r--  1 root  wheel      13 10  5 09:47 ok0
drwxr-xr-x  2 root  wheel     512  9 20 04:11 src
drwxr-xr-x  2 root  wheel     512  9 29 11:46 xingzuo
# file oko
oko: can't stat `oko' (No such file or directory).
# echo $?
0
# test -r okok
# echo $?
1
# cp /okokkokok /etc/
cp: /okokkokok: No such file or directory
# echo $?
1
# file wrong
wrong: can't stat `wrong' (No such file or directory).
# echo $?
0
# [ -r fs ]
# echo $?
0

为什么错误cp 就产生0,而file错误就没有 :ask :ask

bash-2.05b# a=ok
bash-2.05b# expr $ok + 1 >/dev/null
expr: syntax error
bash-2.05b# echo $?
2
bash-2.05b#
这里的 echo $? 的值是2 ,:ask :ask
发表于 2003-10-6 13:58:05 | 显示全部楼层
echo $?返回的是上的程序的_返回值_
这个和是否成功执行没直接关系,只是大多数程序习惯成功返回0,失败返回其他值

比如..
  1. $ ./test.sh
  2. $ echo $?
  3. 5
  4. $ cat test.sh
  5. #!/bin/bash
  6. exit 5;
复制代码

具体到file,刚才看了一下它的源码,也容易
比如file -v看到
magic file from /usr/share/misc/file/magic

只要把这个目录下的东西都删掉,file就返回1了。呵呵
发表于 2003-10-6 13:59:17 | 显示全部楼层
那个expr,info expr就可以看到

   Exit status:
                                                                              
     0 if the expression is neither null nor 0,
     1 if the expression is null or 0,
     2 for invalid expressions.
 楼主| 发表于 2003-10-6 14:24:15 | 显示全部楼层
谢谢,请问 这里的yes or no  是什么意思?

         Command       External    csh(1)    sh(1)
           alias         No          Yes       Yes
           alloc         No          Yes       No
           bg            No          Yes       Yes
           bindkey       No          Yes       No
           break         No          Yes       Yes
           breaksw       No          Yes       No
           builtins      No          Yes       No
           case          No          Yes       Yes
发表于 2003-10-7 01:02:15 | 显示全部楼层
这是一个表格,意思是某些命令属于shell内建,以及是否有对应的外部程序实现
 楼主| 发表于 2003-10-7 09:51:29 | 显示全部楼层
谢谢~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表