1,定义变量时变量名和等号 之间不能有空格,且有以下规则:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
2,使用变量
在变量前面加$或${},花括号可加可不加。加括号是为了识别变量的边界
for skill in Ada Coffe Action Java; do
echo "I am good at ${skill}Script"
done
如果不加花括号,skillScript就会当做一个变量。
2,只读变量
使用readonly可以将变量定义为只读变量,只读变量的值不能被改变
Tmp=“tmp”
Readonly tmp
3,删除变量
使用unset命令可以删除变量,但不能删除只读变量
Tmp=“tmp”
Unset tmp
4,变量类型
a,局部变量:在脚本和命令中定义,只对当前shell有效。
b,环境变量 所有程序,包括shell启动程序都能访问环境变量。
c,shell变量 shell变量由shell程序设置的特殊变量,一部分是局部变量一部分是环境变量。
二,字符串
1,单引号,双引号,不加引号
Str=‘tmp’
Str=“tmp”
Str=tmp
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
your_name='runoob'
str="Hello, I know you are \"$your_name\"! \n"
echo -e $str
Hello, I know you are "runoob"!
2,拼接字符串
your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
# 使用单引号拼接
greeting_2='hello, '$your_name' !' #单引号中的单引号用于字符串拼接
greeting_3='hello, ${your_name} !'
echo $greeting_2 $greeting_3
输出结果:
hello, runoob ! hello, runoob !
hello, runoob ! hello, ${your_name} !
3,获取字符串的长度
String="abcd"
Echo ${#string}#输出4
4,提取子串
String="abcdefg"
Echo ${string:1:3}#从string中第2个字符开始截取3个字符 输出为bcd,必须加花括号
5,查找子字符串
string="runoob is a great site"
echo `expr index "$string" io` # 输出 4 注意是反引号
查找字符 i 或 o 的位置(哪个字母先出现就计算哪个)
三,shell数组
bash支持一位数组(不支持多维数组),并且没有限定数组大小
1,定义数组
数组元素用空格分开
数组名=(值1 值2 ... 值n)
array_name=(value0 value1 value2 value3)
或
array_name=(
value0
value1
value2
value3
)
或
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
2,读取数组
一般格式:${数组名[下标]} 如:valuen=${array_name[n]}
使用@符号可以获取数组中的所有元素 如:
Echo ${array_name[@]}
3,获取数组长度
取数组元素的个数:
Length=${#array_name[@]}
或者
Length=${#array_name[*]}
取得数组单个元素的的长度:
Lengthn=${#array_name[n]}
#!/bin/bash
array=(
sun
shuai
sunshuai
)
echo 全部元素:${array[@]}
echo 数组的长度:${#array[@]}
echo 数组的长度:${#array[*]}
echo 元素3的长度:${#array[2]}
全部元素:sun shuai sunshuai
数组的长度:3
数组的长度:3
元素3的长度:8
三,多行注释
单行注释可以使用#那么多行注释了?
:<<EOF
注释内容
注释内容
EOF
EOF也可以使用其他符号 如 ' !
6183

被折叠的 条评论
为什么被折叠?



