1.shell有两种执行命令的方式:
交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。
批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。
2.编辑shell脚本的步骤:首先,进入.sh的文本编辑中
然后,在头部写入#!/bin/bash
接下来就是编写功能
最后,保存退出,修改权限,执行shell脚本。
3.定义变量
规则:
首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关键字)。
4.使用变量
${变量名}
5.只读变量
readonly 变量名
6.删除变量
unset 变量名
7.转义字符
\\ 反斜杠
\a 警报,响铃
\b 退格(删除键)
\f 换页(FF),将当前位置移到下页开头
\n 换行
\r 回车
\t 水平制表符(tab键)
\v 垂直制表符
8.算术运算符
9.关系运算符
10.布尔运算符
11.字符串运算符
12.文件测试运算符
13.单引号
1单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
2单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
14.双引号
1双引号里可以有变量
2双引号里可以出现转义字符
15.拼接字符串
$变量名$变量名
16.获取字符串长度
${#变量名}
17.提取子字符串
expr index "$变量名"
18.echo和printf输出语句
19.数组
格式:
array_name=(value0 value1 value2 value3)
读取数组单个元素
${array_name[index]}
使用@ 或 * 可以获取数组中的所有元素
${array_name[*]}
${array_name[@]}
获取数组长度
length=${#array_name[@]}
20.判断语句
条件和方括号([ ])之间必须有空格,否则会有语法错误。
2.Case语句
取值后面必须为关键字 in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。;; 与其他语言中的 break 类似,意思是跳到整个 case 语句的最后。
21.循环语句
for:
列表是一组值(数字、字符串等)组成的序列,每个值通过空格分隔。每循环一次,就将列表中的下一个值赋给变量。in 列表是可选的,如果不用它,for 循环使用命令行的位置参数。
While:
Util:
22.跳出循环
Break:允许跳出所有循环(终止执行后面的所有循环)
在嵌套循环中,break 命令后面还可以跟一个整数,表示跳出第几层循环
表示跳出第 n 层循环。
Continue:不会跳出所有循环,仅仅跳出当前循环
continue 后面也可以跟一个数字,表示跳出第几层循环。
23.函数
function 函数名(){
list of commands
[ return value ]
}
24.调用函数时,调用其名称就好