gpt4 book ai didi

bash - `exit $?` 与 bash 中的 `exit` 有什么不同吗?

转载 作者:行者123 更新时间:2023-11-29 09:09:31 28 4
gpt4 key购买 nike

我的理解是,在 bash 中,一个普通的 exit 将完成一个具有最后一个命令的退出状态的脚本。但我也看到有人使用 exit $? 并且当我建议它具有相同的行为时被质疑。

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

#!/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 }

关于bash - `exit $?` 与 bash 中的 `exit` 有什么不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33325309/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com