1. 变量
- 变量赋值: name=“niudon”
- 使用变量:echo $name
- 花括号:echo ${name},为了标识变量边界。如:echo “I am ${name}123”
- 只读变量:readonly name; name=niudon
- 删除变量:unset name
- 变量类型:
- 局部变量
- 环境变量
- shell变量
2. Shell字符串:
- 单引号:
- 字符串原样输出,变量无效
- 不能出现单独引号,可以成对出现,用作字符串拼接
- 双引号
- 可以有变量
- 可以出现转义字符
- 字符串拼接:name=“123”;name1=‘123’‘1’;name1="${name}1"
- 获取字符串长度:echo ${#name}
- 提取字符串:echo ${naem:1:4}
- 查找字符串:echo
expr index "$name" niu
3. 数组
- 定义:array_name=(value0 value1 …)
- 数组可以不使用连续的下标,且下标的范围没有限制
- 读取数组值:${array_name[n]}
- 使用@符号可以获取数组中所有的元素
- 获取数组长度:length=KaTeX parse error: Expected '}', got '#' at position 2: {#̲array_name[@]} …{#array_name[*]}
4. shell注释
- 单行注释:#
- 多行注释::<<EOF EOF
5. Shell 传参
- $# 传递到脚本的参数个数
- $* 以一个单字符串显示所有向脚本传递的参数。
- $$ 脚本运行的当前进程ID号
- $! 后台运行的最后一个进程的ID号
- $@与$*相同,但是使用时加引号,并在引号中返回每个参数。
- $- 显示Shell使用的当前选项,与set命令功能相同。
- $?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
6. printf命令
- 可以使用转义字符格式化输出
7. test命令
- 检查某个条件是否成立。可以进行数值,字符和文件三个方面的测试
8. 流程控制
- if then else fi
- 无限循环:while :do … done
- break
- continue
9. Shell函数
- read a:读取数据到变量a中
- 函数参数:使用$n的方式
- /dev/null:可以将无用信息输出到null设备中
10. 文件包含
- Shell可以包含外部文件:使用source filename命令即可