day02变量和引用

一,变量

1,什么是变量
变量就是程序语言中的一个可以变化的量(可以改变的是变量的值)
从本质上,变量就是在程序中保存用户数据的一块内存空间,变量名就是这块内存空间的地址
2,变量的命名
在shell中,变量名可以由字母,数字或者下划线组成,并且只能以字母或者下划线开头。对变量名的长度没有任何要求,所以可以使用任意长度的字符串来作为变量名。
3,变量的类型
1)根据数据类型分类
(1)shell是一种动态类型语言和弱类型语言(在shell中,变量的数据类型毋需显示地声明,变量的数据类型会根据不同的操作有所变化)
(2)什么是强类型语言,弱类型语言?
•强类型语言,当你定义一个变量是某个类型,如果不经过代码显式转换(强制转化)过,它就永远都是这个类型,如果把它当做其他类型来用,就会报错
•弱类型语言,你想把这个变量当做什么类型来用,就当做什么类型来用,语言的解析器会自动(隐式)转换。
(3)定义变量的类型:declare
declare命令还可输出所有的变量、函数、整数和已经导出的变量
+/- "-“可用来指定变量的属性,”+"则是取消变量所设的属性
-p:显示所有变量的值
-i:将变量定义为整数,在之后就可以直接对表达式求值,结果只能是整数。如果求值失败或者不是整数,就设置为0。
-r:将变量声明为只读变量。只读变量不允许修改,也不允许删除。(也可使用readonly定义只读变量)
-a:变量声明为数组变量。但这没有必要,所有变量都不必显示定义就可以用作数组。事实上,在某种意义上,似乎所有变量都是数组,而且赋值给没有下标的变量与赋值给下标为0的数组元素相同。
-f:显示所有自定义函数,包括名称和函数体。
-x:将变量设置成环境变量。可使用+x将变量变成非环境变量
2)根据作用域分类
(1)环境变量(全局变量)
环境变量也可称为全局变量,可以在创建它们的shell及其派生出来的任意子进程shell中使用(su - 切换用户会读取新的环境变量),环境变量又可分为自定义环境变量和bash内置的环境变量。
<1>自定义环境变量
一般是指用export内置命令导出的变量,用于定义shell的运行环境,保证shell命令的正确执行。环境变量可以在命令行中设置和创建,但用户退出命令行时这些变量值就会丢失,即该环境变量只在当前shell和子shell中有效。如果希望永久保存环境变量,可以在配置文件中设置。
①用户的环境变量配置(non-login shell)
/.bash_profile或/.bashrc
②全局环境变量的配置(login shell)
/etc/bashrc、/etc/profile文件或者/etc/profile.d目录中定义。
注意:按照系统规范,所有环境变量的名字均采用大写形式。在将环境变量应用于用户进程程序之前,都应该用命令export导出。
有一些环境变量,比如HOME,PATH,SHELL,UID,USER等,在用户登录前就已经被/bin/login程序设置好了,通常环境变量被定义并保存在用户家目录下的.bash_profile文件或全局的配置文件/etc/profile中。
<2>bash内置的环境变量
shell内置的环境变量是所有的shell程序都可以使用的变量。shell程序在运行时,都会接收一组变量来确定登录用户名、命令路径、终端类型、登录目录等,这组变量就是环境变量。环境变量会影响到所有的脚本的执行结果。
(2)普通变量(局部变量)
普通变量也可称为局部变量,与全局变量相比,局部变量的使用范围较小,通常仅限于某个程序段访问,例如函数内部。在Shell语言中,可以在函数内部通过local关键字定义局部变量,另外,函数的参数也是局部变量。
4,变量的定义
1)变量名=变量值(=前后不能有空格;字符串类型建议用引号括起来,尤其是特殊字符或者有空格)
引用变量: 变 量 名 或 者 变量名 或者 {变量名}
查看变量:echo $变量名,set(可查看所有变量:包括自定义变量和环境变量),env显示全局变量,declare输出所有的变量、函数、整数和已经导出的变量。
取消变量:unset 变量名
作用范围:仅在当前shell中有效
注:可使用export指令将变量转换成环境变量
2)位置参数和预定义变量
$# :命令行参数的个数
$n :表示传递给脚本的第n个参数,例如$1表示第一个参数,$2表示第二个参数,$3表示第三个参数
$0 :当前脚本的名称
$* : 以"参数1 参数2 参数3…"的形式返回所有参数的值
$@ :以“参数1”“参数2”“参数3”…的形式返回所有的值
? : 前 一 个 命 令 或 者 函 数 的 返 回 状 态 码 。 ? :前一个命令或者函数的返回状态码。 ??的返回值用法:(1)判断命令、脚本或函数等程序是否执行成功(2)若在脚本中调用执行“exit 数字”,则会返回这个数字给“ ? ” 变 量 ( 3 ) 如 果 是 在 函 数 里 , 则 通 过 “ r e t u r n 数 字 ” 把 这 个 数 字 以 函 数 值 的 形 式 传 给 “ ?”变量(3)如果是在函数里,则通过“return 数字”把这个数字以函数值的形式传给“ ?3return?”
$$ :返回本程序的进程ID(PID),不常用
$! :获取上一个在后台工作的进程的进程号,不常用
$_ :保存之前执行的命令的最后一个参数,不常用

二,引用

在bash中有很多特殊字符,这些特殊字符就具有特殊含义。引用就是通知shell将这些特殊字符当作普通字符来处理。
转义字符“\”:如果将\放到特殊字符前面,shell就忽略这些特殊字符的原有含义,把它们当作普通字符对待
单引号:如果将字符串放到一对单引号之间,那么字符串中所有字符的特殊含义被忽略
双引号:双引号的引用与单引号基本相同,包含在双引号内的大部分特殊字符可以当作普通字符处理,但是仍然有一些特殊字符保留自己的特殊含义,比如”$“和“\”以及“ ` ”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值