变量命名规则:
- 变量名和等号之间不能有空格。
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字。
使用变量
在变量前面加上“$”即可。
a=100
echo $a
echo ${a}
a=99
为了更好区分变量边界,使用的时候应该加上{}
只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
下面的代码执行时会报错:
#!/bin/bash
myUrl="https://www.google.com"
readonly myUrl
myUrl="https://www.runoob.com"
删除变量
使用 unset 命令可以删除变量,变量被删除后不能再次使用。
unset a
不能删除只读变量。
a=100
echo ${a}
unset a
echo ${a} #未输出内容
a=99
echo ${a}
上面代码执行结果:
删除a之后又定义了一个a。
字符串变量
可以用单引号和双引号。
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的。
- 双引号里可以有变量,双引号里可以出现转义字符。
拼接字符串
name="runoob"
# 使用双引号拼接
greeting="hello, "${name}" !"
echo $greeting
# 使用单引号拼接
greeting_2='hello, '${name}' !'
echo $greeting_2
name="runoob"
# 使用双引号拼接
greeting="hello, ${name} !"
echo $greeting
# 使用单引号拼接
greeting_1='hello, ${name} !'
echo $greeting_1
获取字符串长度
str="asdfg"
a=${#str}
echo ${a} #5
获取子字符串
str="hello world"
a=${str:1:6}
echo ${a}
Shell 数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
array=(1 2 3 4 5)
array[8]=8
array[9]=9
echo ${array[8]}
echo ${array[6]}
echo ${array[@]}
# 取得数组元素的个数
length1=${#array[@]}
# 或者
length2=${#array[*]}
echo ${length1}
echo ${length2}