美文网首页
Linux 父子Shell

Linux 父子Shell

作者: oasis_m | 来源:发表于2020-01-31 17:32 被阅读0次

声明:所有文章只作为学习笔记用,转载非原创
终端;https://blog.csdn.net/zyboy2000/article/details/88100843

https://www.cnblogs.com/lqynkdcwy/p/9350144.html

重点看看:子shell 嵌套模式

https://blog.csdn.net/zhou16333/article/details/83796907
调用脚本的模式:

shell调用脚本的模式说明

在主脚本中嵌套脚本的方式有很多,常见的为fork、exec、source三种模式,这三种调用脚本的方式有一定的区别。

fork模式调用脚本知识

fork模式是最普通的脚本调用方式,及直接在父脚本里面用“/bin/bash /directory/script.sh”来调用脚本,或者在命令行中给script.sh脚本文件设置执行权限,然后使用/directory/script.sh来调用脚本。
  使用上述方式调用脚本的时候,系统会开启一个SubShell(子shell)执行调用的脚本,SubShell执行的时候ParentShell还在,SubShell执行完毕后返回到ParentShell。最后的结论是SubShell可以从ParentShell继承环境变量,但是默认情况下SubShell中的环境变量不能带回ParentShell。
  执行方式说明:
/directory/script.sh #<== 对脚本赋予执行权限,直接执行脚本。
/bin/bash /directory/script.sh #<== 在不赋予执行权限时,利用执行解释器执行

exec模式调用脚本

exec模式与fork模式调用脚本的方式不同,<mark style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; background-color: rgb(248, 248, 64); color: rgb(0, 0, 0); overflow-wrap: break-word;">不需要新开一个SubShell来执行被调用的脚本</mark>。被调用的脚本与父脚本在同一个shell内执行,但是使用exec调用一个新脚本以后,<mark style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; background-color: rgb(248, 248, 64); color: rgb(0, 0, 0); overflow-wrap: break-word;">父脚本中的exec执行之后的脚本内容就不会再执行了,这就是exec和source的区别</mark>。
  执行方式说明:
exec /directory/script.sh

source模式调用脚本

<mark style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; background-color: rgb(248, 248, 64); color: rgb(0, 0, 0); overflow-wrap: break-word;">source模式与fork模式的区别是不会新开一个SubShell来执行被调用的脚本,而是在同一个shell中执行,所以在被调用的脚本中声名的变量和环境变量都可以在主(父)脚本中获取和使用</mark>。
  source模式与exec模式相比,最大的不同之处是使用source调用一个新脚本以后,父脚本中source命令行之后的内容在自脚本执行完毕后依然会被执行。
  执行方式说明:
source /directory/script.sh #<== 使用source不容易被误解,而“.”和“./”相近,容易被误解。
. /directory/script.sh #<== “.”和source命令的功能是等价的。

https://blog.csdn.net/lwj457700209/article/details/99600570
根据变量的生效范围等标准划分下面变量类型:
set:查看所有变量(全局变量,局部变量还有函数)
1.局部变量(标准变量,普通变量):生效范围为当前shell进程---当前会话(session);对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效
echo $$:当前进程编号(4496)
echo $PPID:父进程编号(4272)

2.环境(全局)变量:生效范围为当前shell进程及其子进程(export=declare -x|env命令可以查看系统中环境变量)
第一种定义方法:name=mage------export name
第二种定义方法:export name=mage
第三种定义方法:declare -x name=mage

3.本地变量:生效范围为当前shell进程中某代码片断,通常指函数
4.位置变量:1,2, ...来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数
5.特殊变量:?,0, *,@, #,$$ 变量赋值:name=‘value’ 可以使用引用value: (1) 可以是直接字串; name=“root" (2) 变量引用:name="USER"
(3) 命令引用:name=COMMAND name=(COMMAND) 变量引用:{name} $name
"":弱引用,其中的变量引用会被替换为变量值
'':强引用,其中的变量引用不会被替换为变量值,而保持原字符串
显示已定义的所有变量:set
删除变量:unset name

相关文章

  • Linux 父子Shell

    声明:所有文章只作为学习笔记用,转载非原创终端;https://blog.csdn.net/zyboy2000/a...

  • Linux学习--No.4父子shell与后台模式

    理解Linux父子shell间的关系以及后台运行模式可以让我们更高效地完成一些任务。 要点1:父子shell 父s...

  • Linux 变量 父子SHELL

    声明:所有文章只作为学习笔记用,转载非原创https://www.cnblogs.com/lqynkdcwy/p/...

  • Shell入门笔记

    Shell脚本:Linux Shell脚本学习指南菜鸟教程 - Shell教程Linux入门 - Shell脚本是...

  • shell基础

    Linux学习 一、shell介绍 Linux shell基础 什么是shell shell是一个命令解释器,提供...

  • Linux下的shell

    Shell 和 Linux shell程序是包含若干行shell或linux命令的文件。linux命令语句只能一行...

  • linux shell脚本攻略笔记

    LINUX SHELL脚本攻略笔记[速查] linux shell脚本攻略笔记

  • Shell学习

    Linux Shell基础教程 (一) (二) Linux Shell简明教程(推荐) (一) (二) Linux...

  • Shell 脚本编程简介

    Shell菜鸟教程[https://www.runoob.com/linux/linux-shell.html] ...

  • shell 教程学习推荐地址

    [shell 教程学习推荐地址:] http://www.runoob.com/linux/linux-shell...

网友评论

      本文标题:Linux 父子Shell

      本文链接:https://www.haomeiwen.com/subject/mtogthtx.html