我是靠谱客的博主 忐忑便当,最近开发中收集的这篇文章主要介绍shell 跳过当前错误继续执行_shell脚本中的 exec 命令一、exec是bash的内置命令二、Linux shell 脚本中, $@ 和$# 分别是什么意思?三、怎么理解$0,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、exec是bash的内置命令

exec执行命令时,不会启用新的shell进程。

source和 .也不会启用新的shell进程,在当前shell中执行,设定的局部变量在执行完命令后仍然有效。

bash或sh执行时,会另起一个子shell进程,其继承父shell进程的环境变量,其子shell进程的变量执行完后不影响父shell进程。

exec是用被执行的命令行替换掉当前的shell进程,且exec命令后的其他命令将不再执行。

例如在当前shell中执行 exec ls 表示执行ls这条命令来替换当前的shell ,即为执行完后会退出当前shell。

为了避免父shell被退出,一般将exec命令放到一个子shell脚本中,在父sehll中调用这个子shell脚本,调用处可以用bash xx.sh(xx.sh为存放exec命令的脚本),这样会为xx.sh建立一个子shell去执行,当执行exec后该子shell进程就被替换成相应的exec的命令。

其中有一个例外:当exec命令对文件描述符操作的时候,就不会替换shell,而是操作完成后还会继续执行后面的命令!

文件描述符

shell中描述符一共有12个

0 代表标准输入

1 代表标准输出

2 错误输出

其他 3-9 都是空白描述符

#  exec3>&1 4>&2 1>> bash.log 2>&1

其含义是: 复制标准输出到3 ,错误输出到 4 

最后

以上就是忐忑便当为你收集整理的shell 跳过当前错误继续执行_shell脚本中的 exec 命令一、exec是bash的内置命令二、Linux shell 脚本中, $@ 和$# 分别是什么意思?三、怎么理解$0的全部内容,希望文章能够帮你解决shell 跳过当前错误继续执行_shell脚本中的 exec 命令一、exec是bash的内置命令二、Linux shell 脚本中, $@ 和$# 分别是什么意思?三、怎么理解$0所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部