exec是linux shell内建命令,该命令将使用一个特定的命令来取代当前进程。一般当shell遇到一个命令,它会forks off一个子进程来真正的运行命令,但使用exec内建命令,shell就不会fork一个子进程了,并且命令的执行将会替换掉当前shell。因此在脚本中使用时,一旦exec所执行的命令执行完毕,那么它就会强制退出脚本。
- [root@elasticsearch ~]# cat exec.sh
- #!/bin/bash
-
- exec echo "Exiting \"$0\"."
- #脚本会在这里退出
-
- echo "This echo will never echo."
- exit 99
- #脚本不会在这里退出。脚本退出后,使用echo $?来检查一下退出码,一定不是99
- [root@elasticsearch ~]# sh exec.sh
- Exiting "exec.sh".
- [root@elasticsearch ~]# echo $?
- 0
- [root@elasticsearch ~]#