shell变量
命名规则
- 首个字符必须是字母(a-z,A-Z)
- 可以使用大小写字母(a-z,A-Z),下划线,数字
- 不能使用空格,不能使用bash里的关键字
- 赋值语句中的‘var=value’不能有空格
变量引用
${var} 获取变量的值
1 name="pz" 2 echo $name 3 echo ${name}
如果在$var时后直接接字符,需要加{},否则会解析失败。
可以对变量值进行修改。
1 name="pz" 2 echo $name 3 name="bobo" 4 echo $name
只读变量
通过readonly进行声明,只读变量的值不能被改变
1 #!/bin/bash 2 age=25 3 readonly age
删除变量
可以删除已经定义的变量
unset var
变量作用域
- 局部变量-在脚本和命令中定义,仅在当前shell中有效
- 环境变量-所有的程序都能访问环境变量
- shell变量-shell程序设置的特殊变量。
Shell字符串
shell中主要是数字和字符串,字符串可以用单引号和双引号,也可以不用引号
str='my is a string'
- 单引号里的任何字符都是字符,变量是无效的
- 单引号的字符串不能出现单引号,用转义字符后也不行
- 双引号里可以有变量
- 双引号可以使用转义字符
example
1 string="abcd" 2 echo ${#string} #获取字符串长度 3 4 string="a good job" 5 echo ${string:1:4} #提取子字符串
Shell数组
- bash支持一维数组(不支持多维数组),并且没有限定数组的大小
- 数组元素的下标从0开始,下标可以是整数或算术表达式,其值应大于或等于0
- 数组的下标没有限制,可以不使用连续的下标
- 用括号来表示数组,数组元素用空格符号分割。
- 使用@符号可以获取数组中的所有元素
数组定义
array_name=(v1 v2 ... vn)
读取数组值
${数组名[下标]}
example
1 a1=(1 2 3 4 5 ) 2 3 a1=( 4 1 5 2 6 3 7 4 8 5 9 ) 10 11 a1[0]=1 12 a1[1]=2 13 a1[2]=3 14 a1[3]=4 15 a1[4]=5
获取数组长度
len=${#array_name[@]}
len=${#array_name[*]}
注释
用'#'开头的行会被解释器忽略
shell里没有多行注释.只能每一行加一个#