shell中exit与return以及source与sh的区别

https://www.cnblogs.com/yldf/p/11900048.htmlicon-default.png?t=N7T8https://www.cnblogs.com/yldf/p/11900048.html

直接看例子

[root@localhost test]# cat b2.sh
echo b2
exit 1
[root@localhost test]# cat c2.sh
source ./b2.sh
return $?
[root@localhost test]# sh c2.sh 
b2
[root@localhost test]# 
[root@localhost test]# 
[root@localhost test]# cat b1.sh
echo b1
exit 1
[root@localhost test]# cat c1.sh
sh ./b1.sh
echo $?
[root@localhost test]# sh c1.sh
b1
1
[root@localhost test]# cat b.sh
echo hhh
return 1
You have new mail in /var/spool/mail/root
[root@localhost test]# cat c.sh
sh ./b.sh
echo $?
[root@localhost test]# sh c.sh
hhh
./b.sh: line 2: return: can only `return' from a function or sourced script
1
[root@localhost test]# 

总结

  • 在脚本c.sh中sh ./b.sh ,则会重新创建一个shell进程,环境变量可能不同;
  • 在脚本c.sh中source ./b.sh,此时执行b.sh待shell进程与执行c.sh的shell进程是同一个,环境变量是一样的
  • return只能在函数中或者是被source 的脚本中使用

 

你可能感兴趣的:(shell,服务器,linux,网络)