加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

`exit $?`与bash中的`exit`有意义不同?

发布时间:2020-12-15 22:03:41 所属栏目:安全 来源:网络整理
导读:我的理解是,在bash中,普通出口将完成一个脚本,其中包含最后一个命令的退出状态.但我也看到人们使用退出$?当我提出它具有相同的行为时被质疑. 这两个脚本之间有什么有意义的区别吗? #!/bin/bashfoobarexit 和 #!/bin/bashfoobarexit $? 解决方法 没有区别.
我的理解是,在bash中,普通出口将完成一个脚本,其中包含最后一个命令的退出状态.但我也看到人们使用退出$?当我提出它具有相同的行为时被质疑.

这两个脚本之间有什么有意义的区别吗?

#!/bin/bash
foo
bar
exit

#!/bin/bash
foo
bar
exit $?

解决方法

没有区别.如果在没有参数的情况下调用exit,它将返回最后一个命令的退出代码.

这是GNU bash的代码.如果没有给出参数,则返回last_command_exit_value,否则它接受传入的参数,确保它是一个数字,切掉超过8的任何位并返回.

486 get_exitstat (list)
  487      WORD_LIST *list;
  488 {
  489   int status;
  490   intmax_t sval;
  491   char *arg;
  492 
  493   if (list && list->word && ISOPTION (list->word->word,'-'))
  494     list = list->next;
  495 
  496   if (list == 0)
  497     return (last_command_exit_value);      
  498 
  499   arg = list->word->word;
  500   if (arg == 0 || legal_number (arg,&sval) == 0)
  501     {
  502       sh_neednumarg (list->word->word ? list->word->word : "`'");
  503       return EX_BADUSAGE;
  504     }
  505   no_args (list->next);
  506 
  507   status = sval & 255;
  508   return status;
  509 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读