shell脚本编程 - 变量和函数
2019-01-21 本文已影响1人
会飞的蜗牛07
变量和函数是编程语言的基础组成部分。
变量
默认变量
默认变量指的是shell运行已经约定的变量表达形式,常用的有
变量 | 说明 |
---|---|
$0 | 执行脚本名 |
$n | n表示第几个参数,$1表示第一个参数 |
$# | 传递给脚本或函数的参数个数 |
$* | 传递给脚本或函数的所有参数 |
$? | 上个命令的退出状态,或函数的返回值 |
字符串
赋值
字符串的赋值分为两种,一种是直接赋值,例如
name="ketty"
另外一种是利用命令结果赋值,例如
files=`ls`
字符串处理
- 获取字符串长度
${#name}
- 截取字符串
${var#*//} # 从左边开始,删除第一个//号及左边的所有字符
${var##*/} # 从左边开始,删除最后(最右边)一个/号及左边的所有字符
${var:0:5} # 从左边第一个字符开始,截取长度5
${var:7} # 从左边第8个字符开始,一直到结束
${var%/*} # 从右边开始,删除第一个/号及右边的字符
${var%%/*} #从右边开始,删除最后(最左边)一个 / 号及右边的字符
${var:0-7:3} # 从右边第7个字符开始,截取长度3
${var:0-7} # 从右边第7个字符开始,一直到结束
- 字符串拼接
name=${xing}_${ming}
环境变量
直接执行一个脚本文件是在一个子shell中运行的,而source则是在当前shell环境中运行的,所以当需要设置环境变量时需要使用source set_env.sh
而不是./set_env.sh
。
数组
- 定义
array_name=(value0 value1 value2 value3)
- 读取数组元素
${array_name[n]}
- 获取数组长度
${#array_name[@]}
- 获取数组内容
${array_name[@]}
可以看出,array_name[@]
表示数组,array_name
表示字符串。
函数
定义和调用
function 函数名()
{
action
}
函数名 参数列表
入参
函数的入参可以参考上面的默认变量小节。
参考文档
[1]: Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
[2]: shell脚本字符串截取的8种方法
[3]: 利用shell脚本添加环境变量