shell 可以通过添加一个小括号的方式,让命令在子进程执行,和bash xxx.sh执行效果一样,运行过程中设置的环境变量、cd、执行exit等都不影响当前shell,如:

func1() {
	(
		cd /tmp
		touch testfile
		exit 0
	)
}

这里末尾执行exit并不会导致当前的shell退出,这对于行数很多需要提前退出的情况非常有用的。