在linux学习中,shell的学习是必要的,当然在shell的学习中变量的学习很重要。我们在以后的shell学习中,都会用到变量。下面我将自己一些学习变量的过程进行下小结,当然可能有些地方讲的不是很完善。
一,首先我们要理解变量的意义
变量:变量是一段有名字的连续存储空间。在源代码中通过定义变量来申请并命名这样的存储空间,并通过变量的名字来使用这段存储空间。 变量是程序中数据的临时存放场所。在代码中可以只使用一个变量,也可以使用多个变量,变量中可以存放单词、数值、日期以及属性。
上面是给出的标准定义,当然我们也可以这样理解:
变量是存放在内存空间 它的作用是用来命名
当然我们内存中存放的是编址的存储单元
二,变量的命名
可以使用英文字母、数字及_(底线)组成,开头的第一个字母不可以使用数字
变量名称的长度没有限制,但英文字母大小写则有分别
三,变量赋值
VARNAME=VALUE:作用是整个bash进程
变量名称 值
例如:
[root@localhost ~]# USER=ddzhu
定义变量USER的值为ddzhu
[root@localhost ~]# echo $USER
ddzhu
显示USER的值
四,变量类型:这里是针对bash而言,分为下面几大类:
环境变量
本地变量(局部变量)
位置变量
特殊变量
环境变量:作用域为当前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
以上所述都是自己学习的一些小结,有不对的地方还请多多谅解。(*^__^*) ……