zoukankan      html  css  js  c++  java
  • 子shell

     

     

    1、在父shell中执行一个shell脚本,可以产生一个子shell

     测试环境:

    定义一个变量并输出

    1
    2
    3
    [dongzhi@iZ23eyxc0p2Z ~]$ STR=123
    [dongzhi@iZ23eyxc0p2Z ~]$ echo $STR
    123

     编写测试脚本并执行

    [

    1
    2
    3
    4
    5
    6
    7
    8
    dongzhi@iZ23eyxc0p2Z ~]$ cat test.sh
    #!/bin/bash
    echo $STR
    [dongzhi@iZ23eyxc0p2Z ~]$ ./test.sh
      
    [dongzhi@iZ23eyxc0p2Z ~]$ export STR
    [dongzhi@iZ23eyxc0p2Z ~]$ ./test.sh
    123

     子shell不能直接使用父shell中定义的变量,需export提升为环境变量

      

    2、在父shell中执行一条命令,在命令的末尾加上&  可以产生一个子shell

    1
    2
    3
    4
    5
    6
    7
    8
    [dongzhi@iZ23eyxc0p2Z ~]$ STR=123;STR=abc
    [dongzhi@iZ23eyxc0p2Z ~]$ echo $STR
    abc
    [dongzhi@iZ23eyxc0p2Z ~]$ STR=123;STR=abc&
    [1] 16467
    [dongzhi@iZ23eyxc0p2Z ~]$ echo $STR
    123
    [1]+ Done                    STR=abc

    定义一个变量STR赋值123,重新赋值abc,结果变量STR的值为abc,当把第二次赋值末尾加上&,变量STR的值没有变,说明第二次赋值没有 在当前shell,而是开启了一个子shell

      

    3、使用()可以产生一个子shell

    1
    2
    [dongzhi@iZ23eyxc0p2Z ~]$ STR=123&& (STR=abc) && echo $STR
    123

     同上面案例,()中变量赋值不能修改之前变量的值,也产生了子shell

      4、在父shell中执行带管道的命令

    1
    2
    [dongzhi@iZ23eyxc0p2Z ~]$STR=123|STR=456;echo $STR                 
    123

     打印子shell中的变量

    1
    2
    [dongzhi@iZ23eyxc0p2Z ~]$ STR=123|{ STR=456;echo $STR; }
    456
  • 相关阅读:
    移动端字体单位
    我像素的理解
    了解viewport概念
    移动端知识
    本地存储和会话存储
    一屏滚动滚轮事件
    关于jquery的笔记
    关于bind()方法
    [css] 滚动条样式问题
    [element-ui] 表格功能实现(删除选中)
  • 原文地址:https://www.cnblogs.com/jinbiaof/p/6781189.html
Copyright © 2011-2022 走看看