• Shell脚本笔记(二)Shell变量


    Shell变量

    一)全局环境变量

    全局变量对于定义它的shell和其子shell都是可见的,但如果生成它的shell被终止,全局变量也就消失了。另外全局变量会被子shell的同名变量覆盖。

    #定义一个全局变量
    export a="I want break free"
    #或者
    b="Sunday Morning"
    export b
    #删除一个全局变量
    unset a

    二)局部环境变量

    局部环境变量只能在定义它们的进程中可见。

    #注意变量名、等号、和值之间是没有空格的
    c="Live Forever"
    unset c

    区别全局环境变量和局部环境变量其实我们只需要记住:全局环境变量作用范围多了个字shell而已。

    另外关于脚本中的变量,按局部变量方式定义的在整个其范围是整个脚本文件,包括你在方法中定义的变量。要产生一个"块级作用域"的变量需要在变量定义时加上local

    local d="Lucy in the sky"

    三)变量的持久化

    Linux下所有用户要使用的环境变量:

    方案一:将变量放入/etc/profile当中--------致命缺陷:如果升级Linux系统/etc/profile文件会被更新,设置的变量不复存在。

    方案二:在/etc/profile.d目录中创建一个以.sh结尾的文件,写入变量。推荐此方法。

    个人用户要使用的环境变量:

    放入:~/.bashrc文件

    四)数组变量

    #定义
    array=(one tow three four)
    #使用
    echo ${array[0]}
    #three
    echo ${array[*]}
    #one tow three four
    #删除
    unset array[1]
    unset array[*]

    五)特殊变量

    1)位置参数变量

    $0--------------------------------可获取当前脚本文件名,如果执行脚本时包含路径,得到的值时路径

    $n---------------------------------n为数字,当n超过9时必须采用${10}形式。获取执行脚本的第n个参数

    $#--------------------------------当前执行的Shell所接参数个数

    $*---------------------------------获取当前脚本的所有参数,交双引号时相当于"$1 $2 $3"

    $@-------------------------------不加引号时功能和不加引号的$*一样,加引号时等同于 "$1" "$2" "$3"

    2)进程中的特殊状态变量

    $?--------------------------------可获取上个指令执行后的返回值

    $$--------------------------------执行shell脚本的进程号

    六)变量的处理

    1.系统内置命令

    1)echo:在屏幕上输出变量  命令格式 echo args  其中arges可以是变量和字符串组合

    2)eval: 

    命令格式:eval args

    功能:当shell程序执行到eval语句时,shell读入参数args,并将它们组合成一个新的命令。

    3)exec:

    命令格式: exec 命令参数

    功能:在不创建新的子进程前提下,转去执行指定的命令,指定命令执行完毕后,终结该进程。

    (exec 命令:常用来替代当前 shell 并重新启动一个 shell,换句话说,并没有启动子 shell。使用这一命令时任何现有环境都将会被清除。exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会覆盖你当前的 shell 环境)

    4)read:

    命令格式: read  [参数] [变量名](该变量不能为特殊变量)
    功能:从标准输入读取字符串等信息,传给shell内部定义的变量。

    read -t 10 -p 'Pls input the num: ' num

    5)shilft:

    命令格式:shilft—Shilft positional parameters

    功能:在程序中每使用一次shilft语句,都会使所有位置参数向左移动一个位置,最左边的变量被删除。

    6)exit:

    退出shell,可选定一个数字作为返回值。

    2.处理变量内容

    Simple is important!
  • 相关阅读:
    RabbitMQ 工作图解
    RabbitMQ常用命令
    搭建 .Net RabbitMQ 开发环境
    不使用第三个变量交换两个变量的值
    WEB编程 入门简单 进阶难
    C# 字符串的长度问题
    C# 反射
    C# 拼接字符串的几种方式和性能
    ASP.NET MVC 教程汇总
    SSIS中循环遍历组件[Foreach Loop Container]
  • 原文地址:https://www.cnblogs.com/Shadowplay/p/8310027.html
Copyright © 2020-2023  润新知