shell-变量

Shell变量

     变量名可由字母、数字、下划线组成,任何其他的字符都标志着变量名的终止。

     变量名不能以数字开头

     变量名大小写敏感

     变量类型只有一种就是字符串

Shell变量的分类

     按照变量的使用环境来分可以分成本地变量、环境变量、位置变量、特殊变量:

     1.本地变量

          本地变量仅仅在现有用户的shell生命期的脚本中使用,离开现在用户的shell,变量消失。

     2.环境变量

          用于所有用户进程<通称为子进程>,包括编辑器,脚本和应用,登录进程为父进程,shell中执行的用户进程均为子进程。

     3.位置变量

          位置变量表示$0,$1,$2,....$9,最多可以设置9个位置变量,当然也可以通过特殊方法设置更多的位置变量

     4.特殊变量

          具有特殊意义的一些变量

          $# 传递到脚本的参数个数

          $* 以一个单字符串显示所有向脚本传递的参数.与位置变量不同,此选项参数可超过9个

          $$ 脚本运行的当前进程ID号

          $! 后台运行的最后一个进程的进程ID号

          $@ 与$#相同,但是使用时加引号,并在引号中返回每个参数

          $- 显示shell使用的当前选项,与set命令功能相同

          $? 显示最后命令的退出状态.0表示没有错误,其他任何值表明有错误.

     按变量的生存周期来划分,Linux变量可分为两类:

          1. 永久的:需要修改配置文件,变量永久生效。

          2. 临时的:使用export命令行声明即可,变量在关闭shell时失效。

shell变量的创建

     在bash中可以用declare内置命令来创建变量。格式为:

     declare  变量=值

     单独执行declare时将列出所有已设置的变量

只读变量的设置

     使用readonly可以将变量定义成只读。

     readonly  variable

     单独执行readonly可以显示所有的只读变量

     通常只读变量不能被重新赋值或复位,如果只读变量使用declare创建的,那它们不可以被复位,但可以被重新赋值。

显示本地的shell变量

     set命令可以显示环境变量和已经预定义过的本地变量

变量的复位

     使用unset命令可以删除变量

shell变量的赋值

     变量名(variable)=变量值(variable_value)

     1.变量赋值可以在定义时进行:如

         var=hello    # B shell中规定等号两边不能有空白符,如果要给变量赋空值,可以在等号后跟一个换行符。

         var=100    # 变量的值可以改变,只需利用赋值语句重新给它赋值即可。未赋过值的变量仅含一个空字符串。

         var=“hello world”    #如果字符串中出现空格符、制表符或换行符,则必须用双引号括起来  

     2.变量赋值可以在程序运行中进行:如交互输入变量值

         利用read命令可以从键盘上读取数据,然后赋给指定的变量。read命令的一般格式为:

         read  变量1  [变量2 …]  例:

         read  a  b  c      

         # 输入数据时,数据间以空格或制表符作为分隔符。

         # 如果变量个数与给定数据个数相同,则依次对应赋值;

         #如果变量个数少于数据个数,则从左至右对应赋值,但最后一个变量被赋予剩余的所有数据;   

         #如果变量个数多余数据个数,则依次对应赋值,而没有数据与之对应的变量取空串。

     3.可以将一个命令的执行结果赋值给变量。两种形式,如:

         dir=`pwd`      # “ `` ” 是倒引号

         dir=$(pwd)    # 两种形式等价 

shell变量的取值访问

     在shell程序或shell命令中,使用操作符$来对变量进行访问。例如:

         var=hello

         echo  $var             # 输出:hello

     在某些场合下,用花括号或双引号将变量括起来,可以防止shell误解变量值。例如:      

         echo  $varaaa        # 系统会输出变量名为varaaa的变量的值,该变量并未赋值,所以输出为空。

         echo  ${var}         # 输出:hello

         echo  ${var}aaa    # 输出:helloaaa

         echo  "$var"bbb     # 输出:hellobbb  

测试变量是否已经赋值

     ${variable:-value}

     # 如果变量已经赋值,则使用该变量值。如果变量为空,则使用value。需要注意的是,value并不赋给variable。

     ${variable:=value}

     # 该表达式上面的区别就是,如果variable为空,则value赋给variable。

     如果需要检验变量是否为空,如果为空的话则显示带有系统错误信息,则使用下面的表达式:

     ${variable:?}

     如果需要显示自己定义的信息,则如下:

     ${variable:?"customed message "}                                                                                                                               

    集众家之所长:微笑              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值