Shell脚本基础
- shell编程:过程式、解释执行
- 编程语言的基本结构: - 各种系统命令的组合 - 数据储存:变量、数组 - 表达式 - 流程控制
-
shell脚本的shebang机制:
- shebang必须在首行
- 格式:#!/bin/bash
-
变量:在内存中分配空间用于暂存数据
- 变量的类型:字符串、数值
-
强类型语言:在使用变量之前必须声明变量的类型,不允许隐式的类型转换
- 弱类型语言:使用前无需声明,程序执行时将会进行隐式的数据类型转换
-
局部变量:生效范围为当前shell进程;对其他shell进程无效(包括shell)
- 变量赋值: name='value'
- value的值**:** (1)字符串: name='str (2)引用其他变量: name="$PATH" (3)命令引用: name=
`COMMAND`
-
变量引用: ${name}、$name
- " ":弱引用,""中的变量会被替换为变量值
-
' ':强引用,''中的变量不会被替换为变量值,而保持原字符串
-
环境变量:生效范围为当前shell及其子进程
- 环境变量声明、赋值: export name='value' declare -x name='value'
-
显示所有环境变量: env export declare -x
-
只读变量:只能声明,声明后不能修改和删除
- 声明只读变量: readonly name
-
查看只读变量: readonly -p
-
位置变量:在脚本中调用通过命令行传递给脚本的参数
$1,$2,$... : 对应第1、第2个参数 $* : 所有参数,全部参数合为一个字符串 $@ : 所有参数,全部参数为独立的字符串 shift : 每执行一次shift,位置变量的个数就会减一。 set -- : 清空所有位置参数
-
特殊变量:
$0 :脚本自身 $? :返回上一条命令的执行状态,0为执行成功,非0为失败 $# :位置参数总数 $$ : 当前进程的PID
-
exit [n]:自定义退出状态码
- 注意:脚本中一旦遇到exit命令,脚本会立即终止;终止退出状态取决于exit命令后面的数字
- 注意:如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一条命令的状态码