• Linux Shell编程(27)——子shell


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


  • 相关阅读:
    beini破解无线
    commview for wifi 破解无线
    取代奶瓶Minidwep-gtk 破 WPA 全攻略
    CDLinux环境下WiFi密码破解
    WiFi密码破解CDlinux
    如何在vue.js渲染完界面之后再调用函数
    Flex布局备忘
    IDEA基本配置
    Flutter环境搭建踩坑-Android sdkmanager tool not found
    Git操作-DevOps
  • 原文地址:https://www.cnblogs.com/new0801/p/6176853.html
Copyright © 2020-2023  润新知