Linux Shell编程(27)——子shell
2024-10-13 14:57:57
运行一个shell脚本时会启动另一个命令解释器. 就好像你的命令是在命令行提示下被解释的一样, 类似于批处理文件里的一系列命令.每个shell脚本有效地运行在父shell(parent shell)的一个子进程里.这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程.
shell脚本也能启动他自已的子进程. 这些子shell(即子进程)使脚本并行地,有效率地地同时运行多个子任务.
一般来说,脚本里的一个外部命令(external command)能生成(forks)出一个子进程,然而Bash内建(builtin)的命令却不这样做,因此,内建命令比起外部的等价命令执行起来更快.
圆括号里的命令列表
( 命令1; 命令2; 命令3; ... )
嵌在圆括号里的一列命令在一个子shell里运行.
在子shell里的变量不能被这段子shell代码块之外外面的脚本访问.这些变量是不能被产生这个子shell的父进程存取的,实际上它们是局部变量 .
例子:子shell中的变量作用域
#!/bin/bash
# subshell.sh echo echo "Subshell level OUTSIDE subshell = $BASH_SUBSHELL"
# Bash, 版本 3, 增加了新的 $BASH_SUBSHELL 变量.
echo outer_variable=Outer (
echo "Subshell level INSIDE subshell = $BASH_SUBSHELL"
inner_variable=Inner echo "From subshell, \"inner_variable\" = $inner_variable"
echo "From subshell, \"outer\" = $outer_variable"
) echo
echo "Subshell level OUTSIDE subshell = $BASH_SUBSHELL"
echo if [ -z "$inner_variable" ]
then
echo "inner_variable undefined in main body of shell"
else
echo "inner_variable defined in main body of shell"
fi echo "From main body of shell, \"inner_variable\" = $inner_variable"
# $inner_variable 会以没有初始化的变量来打印
echo
exit 0
最新文章
- C#设计模式-访问者模式
- wex5 实战 手指触屏插件 hammer的集成与优劣
- Yii2的Debug工具
- plot a critical difference diagram , MATLAB code
- Centos6下DRBD的安装配置
- Tsung记录
- JVM内存详解-阅读笔记
- Nginx配置https证书
- Groovy学习笔记-Java 5新特性支持
- HAOI2015 简要题解
- c/c++保存日志程序模板
- ss搭建
- servlet实现商品商场项目
- 查看sedna创建的数据库和集合,文档之类
- vue cli3 配置postcss
- TCP系列50—拥塞控制—13、Eifel探测下的拥塞撤销
- AngularJS中$apply
- ElasticSearch-Java-low-level-rest-client官方文档翻译
- WordPress个人博客搭建
- Jump Game I&;&;II——入门级贪心算法
热门文章
- Unty3D动态加载图片
- php之常量小见
- 9张思维导图学习Javascript(转)
- less编码规范
- 重温sql语句中的join操作
- <;artifactId>;maven-compiler-plugin<;/artifactId>;
- 关于for循环中的闭包问题
- QT QString转char*,char*转QString;简单明了,看代码。
- Binary Tree Inorder Traversal 解题思路 &#215;
- [转]python pickle包,cPickle包 存储