SHELL变量定义、种类、值及控制范围

一、变量的定义

以固定名称存放,可能会变化的值

        - 提高脚本对任务需求、运行环境变化的适应能力

        - 方便在脚本中重复使用

变量名称规范:

        - 变量名称不可以使用数字开头

        - 变量名不可以为特殊字符

        - 变量名可以为字母、数字、下划线

二、定义/赋值/查看/取消变量

1、定义/赋值变量

        - 变量名 = 变量值

                root@kylin:~# X=1                        #定义变量X,赋值1
                root@kylin:~# Value_1=Kylin      #定义变量Value_1,赋值Kylin

2、查看变量

        - 引用变量值:$变量名

        - 查看变量值:echo $变量名、echo  ${变量名}

                root@kylin:~# echo $X,$Value_1        #查看变量
                1,Kylin
                root@kylin:~# echo $Value_2.2          #未定义的变量无取值
                .2
                root@kylin:~# echo ${Value_1}.2        #变量名易混淆时,以{}界定
                Kylin.2

3、取消变量

        变量的失效:

                - 退出定义变量的Shell环境时,变量会自动失效

                - 也可手动取消:unset  变量名 ..  ..

                root@kylin:~# unset X
                root@kylin:~# echo $X    #发现为空白输出

三、变量的种类

 1、Shell变量分类角度

1.存储类型

        - 整数型、浮点型、双精度浮点型、字符型、......

        - Shell脚本语言对存储类型要求较松散

2.使用类型

类型说明
环境变量         变量名通常大写,由系统维护,用来设置工作环境,只有个别变量用户可以直接更改
位置变量bash内置,存储脚本执行时的参数
预定义变量bash内置,一类有特殊用途的变量,可以调用但是不能赋值或修改
自定义变量用户自主设置、修改及使用

3.数组也是一个变量,是一个有点特殊的变量

        - 存储多个数据的集合就是数组隔开;坐标0为开始

Variable=($(awk '{print $2}' /root/test))  #从文件中读取内容给数组

echo ${Varable[*]}                                 #打印所有数组的元素

2、环境变量

描述文件 / 命令
配置文件/etc/profile  ~/.bash_profile
列出所有的环境变量命令:env
列出所有变量命令:set
常见的环境变量

- PWD、PATH、USER、LOGNAME、UID

- SHELL、HOME、PS1、PS2、... ...

 3、预定义变量

用来保存脚本程序的执行信息

        - 直接使用这些变量

        - 不能直接为这些变量赋值

变量名含义
$0当前所在的进程或脚本名
$$当前运行进程的PID号
$?命令执行后的返回状态,0表示正常,1或其他值表示异常
$#已加载的位置变量的个数
$*所有位置变量的值
$=统计行号
$@是传给脚本的所有参数的列表
$1是传递给该shell脚本的第一个参数
$2是传递给该shell脚本的第二个参数

4、位置变量

存储脚本执行时的参数
        - 使用$n表示,n为数字序列号

        - $1、$2、...、${10}、${11}、... 

         root@kylin:~# cat /root/a.sh 
         #!/bin/bash
         echo $1 $3                     #查看第1,3个位置参数                                                                       root@kylin:~# /root/a.sh 1 a A        
        1 A                          

 四、变量值及范围控制

1、扩展赋值操作

区分三种定界符:
双引号" ":允许扩展,以$引用其他变量,保留特殊符号含义
单引号' ':禁用扩展,即便$也视为普通字符
反引号``:将命令的执行输出作为变量值,$()与反引号等效 等于命令所输出的值

2、read标准输入取值

read从键盘读入变量完成赋值:

        — 格式:read  [ -p “提示信息”]  变量名     (red iname -> 等待输出值)

        — -p可选,-t 可指定超时秒数

注意:没有空格,read将提示符和变量识别为一个整体

终端显示控制:

        — stty  -echo:关闭终端输出(无显示)

        — stty  echo:恢复终端输出(显示)

3、变量的作用范围

 局部变量:

        - 新定义的变量默认只在当前Shell环境中有效

        - 无法在子Shell环境中使用

全局变量:

        - 全局变量在当前的Shell及子Shell环境中均有效

        - 使用export可将局部变量声明为全局变量

        export  局部变量名[=变量值].. ..:为局部变量添加全局属性

        export -n 全局变量名.. ..:取消指定变量的全局属性 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

*_花非人陌_*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值