shell中的$?与exit 0和1代表什么意思?起什么作用?

#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export PATH

echo "the script name is:$0"

[ -n "$1" ] && echo "the 1st paramter is: $1" ||exit 0

[ -n "$2" ] && echo "the 2nd paramter is: $2" ||exit 0

[ -n "$3" ] && echo "the 3th paramter is: $3" ||exit 0

#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export PATH

echo "the script name is:$0"

[ -n "$1" ] && echo "the 1st paramter is: $1" ||exit 1

[ -n "$2" ] && echo "the 2nd paramter is: $2" ||exit 1

[ -n "$3" ] && echo "the 3th paramter is: $3" ||exit 1

$?与他们看不出有什么关系呀。

[ "$yn" == "Y" -o "$yn" == "y" ] && echo "OK,continue" && exit 0

[ "$yn" == "Y" -o "$yn" == "y" ] && echo "OK,continue" && exit 1

exit0和1加在这里有什么作用?和意义。

$0, $1这些是命令行参数。
比如说脚本名字是run.sh,运行时的命令行是 ./run.sh arg1 arg2
这时$0就是脚本本身,也就是./run.sh,$1就是arg1,$2就是arg2...
至于exit 0首先是退出脚本,其次是指定脚本退出时的返回值,退出后,可以用$?得到这个值。
比如,脚本里退出时是执行的exit 1,这次脚本停止执行并退出,退出后,在shell里echo $?,会得到1这个值。一般来说,0代表成功,其它值代表失败,具体什么值代表什么错误就看写脚本时的约定了。
注意一点,$?一定是最近一次命令的结果,如果你执行脚本时exit 1,但是脚本退出后先执行了一个ls命令,这时ls命令的执行是成功的,那这时再echo $?,得到的就是ls的返回值 0,而不是脚本的exit 1了。
总结一下:$n是用来得到命令行参数,exit n是用来结束脚本并将执行结果返回给调用方,一般就是shell或另外的脚本,而$?是用来得到最近一次命令的返回值。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-15
$?命令状态

当命令成功完成, 返回0
发生错误并退回, 返回非0

网友解释:
当 exit 1 的时候,一般是出错定义这个1,也可以是其他数字,很多系统程序这个错误编号是有约定的含义的。 但不为0 就表示程序运行出错。 调用环境就可以根据这个返回值判断 你这个程序运行是否ok
你可以看看CU的帖子
第2个回答  2013-03-02
$? 指代的是上一条指令的执行结果
exit 0 和 1 是shell 执行结果的
如果你执行这个shell,然后在终端里打echo $?
此时的值应该就是exit后面跟的值本回答被网友采纳
第3个回答  2013-03-02
没什么区别, 前面一个是说退出差返回0 后一个是返回1 , 如果不理解可以一步一步的执行,在执行完上一条代码后,echo $? 可以看到返回结果

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网