LinuxShell脚本——变量和数据类型
LinuxShell脚本——变量和数据类型
摘要:本⽂主要学习了Shell脚本中的变量和数据类型。
变量
定义变量的语法
定义变量时,变量名和变量值之间使⽤“=”分隔,并且等号两边不能有空格:
1变量名=变量值
变量名规则
变量名的定义必须遵循以下规则:
1命名只能使⽤英⽂字母,数字和下划线,⾸个字符不能以数字开头。
2中间不能有空格,可以使⽤下划线。
3不能使⽤标点符号。
4不能使⽤bash⾥的关键字。
使⽤变量
使⽤⼀个定义过的变量,只要在变量名前⾯加美元符号即可,建议将变量名使⽤ {} 括起来之后再添加美元符号:
1echo ${name}
修改变量为只读
使⽤readonly命令可以将变量定义为只读变量,只读变量的值不能被改变,也不能被删除:
1 readonly name
删除变量
使⽤unset命令可以删除变量,但不能删除只读变量:
1 unset name
位置参数
运⾏Shell脚本⽂件时我们可以给它传递⼀些参数,这些参数在脚本⽂件内部可以使⽤ $n 的形式来接收。例如: $1表⽰第⼀个参数, $2表⽰第⼆个参数,依次类推。
如果参数个数达到或者超过了10个,那么就得⽤ ${n} 的形式来接收了,例如: ${10} 、 ${23} 。 {} 的作⽤是为了帮助解释器识别参数的边界,这跟使⽤变量时加 {} 是⼀样的效果。
脚本内容:
1 #!/bin/bash
2echo"第⼀个参数 : $1"
3echo"第⼆个参数 : $2"
脚本调⽤:
1 [root@localhost ~]# sh test.sh A B
执⾏结果:
1第⼀个参数 : A
2第⼆个参数 : B
特殊变量
除了位置参数以外,Shell中还有⼀些特殊变量,这些特殊变量描述了传⼊参数的某些信息:
1 $0:当前脚本的⽂件名。
2 $n:n是⼀个数字,表⽰第⼏个参数。
3 $#:传递给脚本或函数的参数个数。
4 $*:传递给脚本或函数的所有参数。当被双引号""包含时,会将所有的参数从整体上看做⼀份数据,⽽不是把每个参数都看做⼀份数据。
5 $@:传递给脚本或函数的所有参数。当被双引号""包含时,仍然将每个参数都看作⼀份数据,彼此之间是独⽴的。。
6 $?:上个命令的退出状态,或函数的返回值。
7 $$:当前Shell的进程ID。对于Shell脚本,就是这些脚本所在的进程ID。
数据类型
字符串
字符串是shell编程中最常⽤最有⽤的数据类型,字符串可以⽤单引号,也可以⽤双引号,也可以不⽤引号。
建议使⽤双引号,因为双引号⾥可以有变量和特殊字符,可以按照变量和特殊字符去使⽤。
声明字符串类型的变量:
linux shell编程求和1 name="Sam"
拼接字符串:
1 hello="hello, $name !"
整数型
在Shell中所有的变量默认都是字符串型。也就是说,如果不⼿⼯指定变量的类型,那么所有的数值都是不能进⾏运算的:
1 [root@localhost ~]# a=1
2 [root@localhost ~]# b=2
3 [root@localhost ~]# c=$a+$b
4 [root@localhost ~]# echo $c
51+2
如果想要进⾏数学运算,可以使⽤“$((运算式))”或“$[运算式]”⽅式运算:
1 [root@localhost ~]# echo $(($a+$b))
23
3 [root@localhost ~]# echo $[$a+$b]
43
数组
bash⽀持⼀维数组(不⽀持多维数组),并且没有限定数组的⼤⼩。⽤括号来表⽰数组,数组元素⽤空格符号分割开。定义数组的⼀般形式为:
数组元素的下标由0开始编号。获取数组中的元素要利⽤下标,下标可以是整数或算术表达式,其值应⼤于或等于0。
声明数组类型的变量:
1数组名=(值1 值2 ... 值n)
也可以通过指定下标来声明:
1数组名[下标]=值
获取数组指定下标的值:
1 ${数组名[下标]}
使⽤“@”符号可以获取数组中的所有元素:
1 ${数组名[@]}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。