运行一个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

最新文章

  1. C#设计模式-访问者模式
  2. wex5 实战 手指触屏插件 hammer的集成与优劣
  3. Yii2的Debug工具
  4. plot a critical difference diagram , MATLAB code
  5. Centos6下DRBD的安装配置
  6. Tsung记录
  7. JVM内存详解-阅读笔记
  8. Nginx配置https证书
  9. Groovy学习笔记-Java 5新特性支持
  10. HAOI2015 简要题解
  11. c/c++保存日志程序模板
  12. ss搭建
  13. servlet实现商品商场项目
  14. 查看sedna创建的数据库和集合,文档之类
  15. vue cli3 配置postcss
  16. TCP系列50—拥塞控制—13、Eifel探测下的拥塞撤销
  17. AngularJS中$apply
  18. ElasticSearch-Java-low-level-rest-client官方文档翻译
  19. WordPress个人博客搭建
  20. Jump Game I&&II——入门级贪心算法

热门文章

  1. Unty3D动态加载图片
  2. php之常量小见
  3. 9张思维导图学习Javascript(转)
  4. less编码规范
  5. 重温sql语句中的join操作
  6. <artifactId>maven-compiler-plugin</artifactId>
  7. 关于for循环中的闭包问题
  8. QT QString转char*,char*转QString;简单明了,看代码。
  9. Binary Tree Inorder Traversal 解题思路 ×
  10. [转]python pickle包,cPickle包 存储