name="Tom"
注:变量名和等号之间不能有空格
花括号是为了帮助解释器识别变量的边界,适当的时候可以不加,推荐都加。
name="Tom"
echo $name
echo ${name}
第二次赋值的时候不能写$your_name="alibaba",使用变量的时候才加美元符($)
name="Tom"
echo $name
name="Jack"
echo $name
name="Tom"
readonly name
name="Jack"
#会报错
变量被删除后不能再次使用,unset 命令不能删除只读变量。
name="Tom"
unset name
echo $name
#无输出
①单引号:
str='this is a string'
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
②双引号:
name="Tom"
str="Hello, I am \"$name\"! \n"
echo -e $str
输出结果:
Hello, I am "Tom"!
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
name="Tom"
# 使用双引号拼接
greeting="hello, "$name" !"
greeting_1="hello, ${name} !"
echo $greeting $greeting_1
# 使用单引号拼接
greeting_2='hello, '$name' !'
greeting_3='hello, ${name} !'
echo $greeting_2 $greeting_3
输出结果:
hello, Tom ! hello, Tom !
hello, Tom ! hello, ${name} !
string="abcd"
echo ${#string} # 输出 4
string="abcd"
echo ${#string[0]} # 输出 4
以下实例从字符串第 2 个字符开始截取 2 个字符:
string="Tom is a great boy"
echo ${string:1:2} # 输出 om
查找字符 i 或 o 的位置(哪个字母先出现就计算哪个):
string="runoob is a great site"
echo `expr index "$string" io` # 输出 4
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似于 C 语言,数组元素的下标由 0 开始编号。
数组元素用"空格"符号分割开。定义数组的一般形式为:
数组名=(值1 值2 ... 值n),例如:
array=(val0 val1 val2 val3)
array[0]=val0
array[1]=val1
array[2]=val2
${数组名[下标]}
val0=${array[0]}
echo ${array[@]}
# 或
echo ${array[*]}
输出结果:
val0 val1 val2
# 取得数组元素的个数
length=${#array[@]}
# 或者
length=${#array[*]}
# 取得数组单个元素的长度
lengthn=${#array[n]}
Bash 支持关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素。
declare -A array_name
-A 选项就是用于声明一个关联数组,关联数组的键是唯一的。
我们创建一个关联数组 site,并创建不同的键值:
declare -A site=(["google"]="www.google.com", ["runoob"]="www.runoob.com", ["taobao"]="www.taobao.com")
declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"
array_name["index"]
可以通过键来访问关联数组的元素:
declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"
echo ${site["runoob"]}
# 输出 www.runoob.com
declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"
echo "数组的键为: ${!site[*]}"
echo "数组的键为: ${!site[@]}"
输出的结果为:
数组的键为: google runoob taobao
数组的键为: google runoob taobao
:<
参考:
https://www.runoob.com/linux/linux-shell-variable.html
https://www.runoob.com/linux/linux-shell-array.html