在linux学习中,shell的学习是必要的,当然在shell的学习中变量的学习很重要。我们在以后的shell学习中,都会用到变量。下面我将自己一些学习变量的过程进行下小结,当然可能有些地方讲的不是很完善。

一,首先我们要理解变量的意义

   变量:变量是一段有名字的连续存储空间。在源代码中通过定义变量来申请并命名这样的存储空间,并通过变量的名字来使用这段存储空间。 变量是程序中数据的临时存放场所。在代码中可以只使用一个变量,也可以使用多个变量,变量中可以存放单词、数值、日期以及属性。

    上面是给出的标准定义,当然我们也可以这样理解:

    变量是存放在内存空间   它的作用是用来命名

    当然我们内存中存放的是编址的存储单元


二,变量的命名

  1. 可以使用英文字母、数字及_(底线)组成,开头的第一个字母不可以使用数字

  2. 变量名称的长度没有限制,但英文字母大小写则有分别



三,变量赋值

   VARNAME=VALUE:作用是整个bash进程

    变量名称       值

   例如:

[root@localhost ~]# USER=ddzhu

定义变量USER的值为ddzhu
[root@localhost ~]# echo $USER  
ddzhu

显示USER的值

四,变量类型:这里是针对bash而言,分为下面几大类:

     环境变量
    本地变量(局部变量)
    位置变量
    特殊变量

  1. 环境变量:作用域为当前shell进程及其子进程
    export VARNAME=VALUE    
        "导出"
    脚本在执行时会启动一个子shell进程
       命令行中启动的脚本会继承当前shell环境变量
       系统自行执行的脚本(非命令行启动)就需要自我定义需要各环境变量


     本地变量:
    VARNAME=VALUE:作用域为整个bash进程    
    引用变量:${VARNNAME},括号有时可省略

    局部变量
     local VARNAME=VALUE:作用域为当前代码段

   注释:在讲本地变量的同时我们要提一下输出重定向

           在/dev/null  这个目录是数据黑洞  所有指向这个目录的文件注释信息都不会显示

    例如:

[root@localhost ~]# id tom &>/dev/nul  

id命令输出的状态返回值通过输出重定向到dev/null目录下
[root@localhost ~]# echo $?            

0

这样id tom 的输出结果就不显示了  可以直接echo &?

 

3.

   位置变量:引用脚本参数
    $1, $2,.....


 4.特殊变量   这里我们先说一个特殊变量$?

特殊变量:
$?:上一个命令的执行状态返回值
[root@localhost ~]# ls /var/   执行命令
account  cvs  empty  gdm  local  log   nis  preserve  run    tmp
cache    db   games  lib  lock   mail  opt  racoon    spool  yp
[root@localhost ~]# echo $?   显示上一个命令的返回值  正确为0
0
[root@localhost ~]# lss /var/   执行一个错误的命令
-bash: lss: command not found
[root@localhost ~]# echo $?     显示上个错误的命令的返回值
127                             返回值不为0   为1-255之间的任意数

程序执行,可能有两类返回值
    程序执行结果
    程序状态返回代码(0-255)
         0:正确执行
         1-255:错误执行,1,2,127系统预留:


五,撤销变量

     unset VARNAME

    查看当前shell中的变量
        set

   查看当前shell中的环境变量
    printenv
    env
    export    


以上所述都是自己学习的一些小结,有不对的地方还请多多谅解。(*^__^*) ……