shell脚本编程 - 变量和函数

变量和函数是编程语言的基础组成部分。

变量

默认变量

默认变量指的是shell运行已经约定的变量表达形式,常用的有

变量 说明
$0 执行脚本名
$n n表示第几个参数,$1表示第一个参数
$# 传递给脚本或函数的参数个数
$* 传递给脚本或函数的所有参数
$? 上个命令的退出状态,或函数的返回值

字符串

赋值

字符串的赋值分为两种,一种是直接赋值,例如

name="ketty"

另外一种是利用命令结果赋值,例如

files=`ls`

字符串处理

  1. 获取字符串长度
${#name}
  1. 截取字符串
${var#*//} # 从左边开始,删除第一个//号及左边的所有字符
${var##*/} # 从左边开始,删除最后(最右边)一个/号及左边的所有字符
${var:0:5} # 从左边第一个字符开始,截取长度5
${var:7} # 从左边第8个字符开始,一直到结束
${var%/*} # 从右边开始,删除第一个/号及右边的字符
${var%%/*} #从右边开始,删除最后(最左边)一个 / 号及右边的字符
${var:0-7:3} # 从右边第7个字符开始,截取长度3
${var:0-7} # 从右边第7个字符开始,一直到结束
  1. 字符串拼接
name=${xing}_${ming}

环境变量

直接执行一个脚本文件是在一个子shell中运行的,而source则是在当前shell环境中运行的,所以当需要设置环境变量时需要使用source set_env.sh而不是./set_env.sh

数组

  1. 定义
array_name=(value0 value1 value2 value3)
  1. 读取数组元素
${array_name[n]}​
  1. 获取数组长度
${#array_name[@]}
  1. 获取数组内容
${array_name[@]}

可以看出,array_name[@]表示数组,array_name表示字符串。

函数

定义和调用

function 函数名()
{
  action
}

函数名 参数列表

入参

函数的入参可以参考上面的默认变量小节。

参考文档
[1]: Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
[2]: shell脚本字符串截取的8种方法
[3]: 利用shell脚本添加环境变量

你可能感兴趣的:(shell脚本编程 - 变量和函数)