#!/bin/sh
exit 0
#shell 中, 默认所有的变量都是 全局变量,除非主动变量前面加 local 修饰
#shell 变量是字符变量,只能放字符和数字,shell数组也是如此;而数字也是图形字符;总的来说,shell的变量是图形字符变量
#变量,函数和系统命令可以同名,先搜索脚本后系统环境

#子进程拥有父进程的环境副本,但不能影响父进程的环境;子进程能对父进程的环境有读权限.写的时候,只是在自己的副本中生效,一种写时复制的形式;脚本都是进程,函数不是;
#函数完全共享调用者的环境,并且能影响环境;函数有调用者环境的读写能力;函数完全属于自己的部分只有函数的参数列表,函数的local 局部变量;函数的返回 return ,exit 几乎是完全等效的 ;无法返回8bit以外的任何数据;只能用全局变量
# 变量分三个等级:
1.env 全局环境, export -f varname 添加 export -n varname 删除
2.父环境,调用者环境: 包含 env 调用者已经声明的,没有通过export -f 输出的变量;调用者用 local 定义的调用者生命周期内的变量,与env同名的时候也可优先使用该局部变量;
3.子环境:被调用者的环境,子进程,脚本,是父进程的环境的写时复制;函数共享调用者的环境,它们是同一个进程;函数内的local 变量:函数的参数列表,local 修饰的,是函数生命周期内有效的;source 脚本文件名,将脚本退化为函数使用,但是脚本不允许使用local;

注意:1.可以在函数内定义函数,默认不是局部函数,生命周期和变量的定义规则是一样的;inner函数也可为以在外部函数的外部调用.但是外部函数的local,这时候会没有数据;
    2.shell 中的自己定义变量没法存换行符等控制符,它们会在shell的处理过程中就被用掉
    3.shell 主要通过输入输出设备来操作;除了变量还可以使用文件,输入输出管道等非变量的数据结构,里面能存控制符;
    4.shell 中所有的命令包括 :命令名 命令变量参数 命令的数据输入输出流控制参数

流控制命令 exec 常规命令名 命令变量参数 命令的数据输入输出流控制参数
文件描述符与网络socket挂接
exec 8<> /dev/tcp/www.baidu.com/80

文件是IO设备是输入输出流设备
流与数据控制命令:
        输入流从变量获取数据:   0<<<$varname
        输入流从变量获取数据:   0<&$varname     ; 0<&$1
        输入流文件描述符获取数据:   0<&8    ;
        关闭输入流挂接,输入流现在为标准输入设备:  0<&-
        
        输出流与文件挂接: 2>&1  1>/filename
        输出流与文件挂接: >&  /filename
        输出流与文件挂接: &>  /filename

shell中的数据生命周期scope的更多相关文章

  1. Spring:Spring中bean的生命周期

    Spring中,从BeanFactory或ApplicationContext取得的实例为Singleton(单例模式),就是预设为每一个Bean的别名只能维持一个实例,而不是每次都产生一个新的对象使 ...

  2. (spring-第1回【IoC基础篇】)Spring容器中Bean的生命周期

    日出日落,春去秋来,花随流水,北雁南飞,世间万物皆有生死轮回.从调用XML中的Bean配置信息,到应用到具体实例中,再到销毁,Bean也有属于它的生命周期. 人类大脑对图像的认知能力永远高于文字,因此 ...

  3. JAVA面试题:Spring中bean的生命周期

    Spring 中bean 的生命周期短暂吗? 在spring中,从BeanFactory或ApplicationContext取得的实例为Singleton,也就是预设为每一个Bean的别名只能维持一 ...

  4. Android应用程序中Activity的生命周期

    Android应用程序中Activity的生命周期 对于Android来说Activity的生命周期是非常的重要,尤其是对于新学者来说,只有充分了解了Activity的生命周期,才能写出优良用户体验的 ...

  5. 简:Spring中Bean的生命周期及代码示例

    (重要:spring bean的生命周期. spring的bean周期,装配.看过spring 源码吗?(把容器启动过程说了一遍,xml解析,bean装载,bean缓存等)) 完整的生命周期概述(牢记 ...

  6. 软件测试中Bug的生命周期以及Bug的严重等级

    软件测试中Bug的生命周期以及Bug的严重等级 我猜你们都会,但能说专业且全面不? 1.首先当测试人员接到一个项目或产品准备测试的时候,测试人员会根据测试用例一步步的来执行用例进行简单的功能测试.当测 ...

  7. 通过BeanPostProcessor理解Spring中Bean的生命周期

    通过BeanPostProcessor理解Spring中Bean的生命周期及AOP原理 Spring源码解析(十一)Spring扩展接口InstantiationAwareBeanPostProces ...

  8. 7 -- Spring的基本用法 -- 9...容器中Bean的生命周期

    7.9 容器中Bean的生命周期 Spring可以管理singleton作用域的Bean的生命周期,Spring可以精确地知道该Bean何时被创建,何时被初始化完成.容器何时准备销毁该Bean实例. ...

  9. 一分钟掌握Spring中bean的生命周期!

    Spring 中bean 的生命周期短暂吗? 在spring中,从BeanFactory或ApplicationContext取得的实例为Singleton,也就是预设为每一个Bean 的别名只能维持 ...

随机推荐

  1. .NET Core通过过滤器和中间件两种方式实现全局异常捕获和日志记录

    1.一共有五类过滤器IAsyncAuthorizationFilter  IAsyncResourceFilter   IAsyncActonFilter  IAsyncExceptionFilter ...

  2. git命令合并分支代码

    对于复杂的系统,我们可能要开好几个分支来开发,那么怎样使用git合并分支呢? 合并步骤:1.进入要合并的分支(如开发分支合并到master,则进入master目录)git checkout maste ...

  3. MPU6050可以读取器件ID值,但读出的加速度计和陀螺仪的数据均为零

    今天在调试MPU6050时发现,MPU6050可以正常读取器件ID,但读取的加速度计和陀螺仪的数据均为零. 经过排查发现,MPU6050第20脚的电容没用焊接,C6可以使用10uF的电容.

  4. java获取本机ip地址(写出来的)

    /** * @author 豪弟 * @param request * @return * @throws IOException */ public final static String getI ...

  5. VNPY加密教程(Python生成pyd文件)

    安装成功之后,再修改设置.让Cython可以找到vcarsall.bat.此处有两种方案.(我采用方案1,亲测可用.方案2未测试,看似可用.) 方案1:修改Python安装目录的文件设置 window ...

  6. SSM框架完成Ajax简单用户登录验证

    一.前端JSP <%@ page contentType="text/html;charset=UTF-8" language="java" %> ...

  7. English trip V2 - 4. Really Wild Teacher:Maple Key:Adjectives of feeling

    In this lesson you will learn how to recognize animals and describe feeling. 课上内容(Lesson) 词汇(Key Wor ...

  8. ansible如果兼容Centos5

    基本安装 安装gcc,用于编译python源码 yum install gcc 更新python版本 centos自带python2.6版本,由于centos已对python深度依赖,所以更新pyth ...

  9. 不安全代码只会在使用 /unsafe 编译的情况下出现

    在你的项目属性页面里面,把是否包含unsafe代码的选项选上

  10. Vagrant 入门指南

    https://blog.csdn.net/qianghaohao/article/details/80038096 https://blog.csdn.net/happyhorizion/artic ...