#!/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. Spring Boot监控与管理的实现

    认识Actuator 在SpringBoot应用中引入spring-boot-starter-actuator依赖,它可以为开发团队提供系统运行的各项监控指标. 在项目中引入依赖配置如下: appli ...

  2. DAY 22初识面向对象

    一.两种编程思想 1.面向过程编程 核心是'过程',过程指的是解决问题的步骤,就是先干什么再干什么 基于面向过程思想编写程序相当于写一条流水线,是一种机械式的思维方式 优点:解决问题的思路清晰,可以把 ...

  3. [冷知识] 连字符-减号-横杠的区别 difference between hyphen-minus-dash

    因为早期打印机等宽的原因, 连字符和减号都是 -, 叫做hyphen-minus ,对应Unicode: U+002D(ASCII也是). 现在减号可以是:U+2212, 但编程语言中还是习惯使用U+ ...

  4. c#格林治时间实现

    C#时间戳的简单实现   Introduction: 在项目开发中,我们都经常会用到时间戳来进行时间的存储和传递,最常用的Unix时间戳(TimeStamp)是指格林尼治时间1970年1月1日0时(北 ...

  5. 撸一个小型PHP框架

    项目地址:https://packagist.org/packages/cshaptx4869/frame # 开发中... ## 20190410 注解路由 ## 20190411 依赖注入 容器I ...

  6. 还能不能愉快地起一个web服务啦?——1st Step!白话http和代码交互的那点儿事儿~

    学写python的时候,我们多多少少都接触到了web程序,然而你有没有想过,当浏览器发送了一个http请求时,等待接收这个请求的后端代码是一种什么样的思想感情? 就像下面这张图里画的一样,后端也许是一 ...

  7. linux添加本地yum源

    增加一块硬盘 然后格式化成btrfs格式的文件 mkfs.btrfs /dev/sde 永久挂载 echo "/dev/sde /mnt btrfs defaults 0 0" & ...

  8. maven中央仓库地址(支持db2,informix等)

    maven中央仓库地址(以下设置写在pom.xml文件里): <repositories> <repository> <id>nexus</id> &l ...

  9. PHP的json_encode()函数与JSON对象

    一.问题描述 这周搬砖的时候,前端通过ajax获取后端的数据后,照例用 对象.属性 的方式取值,然而结果总是总是不能如预期般展示在页面上. 先写个 demo 还原下场景:选中一个下拉框列表选项后,会在 ...

  10. mockjs在vue中的使用

    mockjs在vue中的使用 安装好vue-cli后 加载模块: npm install mockjs 创建mock.js文件到src目录下的任一合适文件内新建mockjs.js,设置好拦截信息,设置 ...