shell教程快速入门
1 初识shell
shell是一种命令语言,又是一种程序设计语言,使用者可以通过shell访问操作系统的内核服务。
shell编程和java、python、C一样,只要一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。把可执行的shell指令放进文件,这个文件就是shell程序。.
shell程序对应的文件的后缀是.sh
shell语言的解释器: 默认bash
2 shell变量
2.1 定义变量
变量名=值
变量名的命名须遵循如下规则:
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用bash里的关键字
注意: 等号左右两边不允许有空格,如果有空格,解释器会将其解释为一条指令,这条指令不存在就会报错
# 正确定义变量
a=10
# 错误定义方式
a = 10
2.2 使用变量
使用一个定义过的变量,只要在变量名前面加美元符号($)即可,如:
a=10
# 输出a的值
echo $a
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。
a=10
# 输出a的值
echo ${a}
2.3 只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
下面的例子尝试更改只读变量,结果报错:
abin@abin-virtual-machine:~$ ./a.sh
./a.sh: 行 3: a: 只读变量
a=10
readonly a
# 将只读变量a的值修改为20,运行时会报错
a=20
2.4 删除变量
使用 unset 命令可以删除变量,用法如下:
a=10
# 删除变量 a
unset a
unset 命令不能删除只读变量。
3 常用的字符类型
3.1 字符串类型
字符串是shell编程中最常用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。
3.1.1 单引号
str1='今晚的月亮大又圆'
单引号字符串的限制:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,可作为字符串的拼接使用。
3.1.2 双引号
str2="今晚的星星好多"
双引号的优点:
双引号里可以有变量
双引号里可以出现转义字符
3.1.3 字符串拼接
单引号拼接
str1='今晚的月亮大又圆'
str2='今晚的星星好多'
str3=''$str1','$str2''
echo $str3
# 运行结果
abin@abin-virtual-machine:~$ ./a.sh
今晚的月亮大又圆,今晚的星星好多
双引号拼接
str1="今晚的月亮大又圆"
str2="今晚的星星好多"
str3=""$str1","$str2""
echo $str3
# 运行结果
abin@abin-virtual-machine:~$ ./a.sh
今晚的月亮大又圆,今晚的星星好多
3.1.4 获取字符串长度
str1="今晚的月亮大又圆"
echo ${#str1} # 输出8
3.1.5 提取字符串
str1="今晚的月亮大又圆"
echo ${str1:1:3} # 晚的月
3.1.6 查找字符串中某个字符出现的位置
str1="hello baby"
echo `expr index "$str1" b` # 7
4.1 数组类型
4.1.1 定义数组
在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
数组名=(值1 值2 ... 值n)
list=(1 2 3 4 5 6)
4.1.2 读取数组
读取数组元素值的一般格式是:
${数组名[下标]}
例如:
echo ${list[2]}
使用 @ 符号可以获取数组中的所有元素,例如:
echo ${list[@]}
4.1.3 读取数组
获取数组长度的方法与获取字符串长度的方法相同,例如:
echo ${#list[@]}