Shell笔记-字符串、数组、函数
这是最后一篇Shell的笔记了,记录的只是一些基础,用于帮助我们能使用Shell,至于深入,只能靠大量的实践以及对大牛代码的阅读模仿,而我觉得,这些够了。
Shell介绍
字符串和数组
常用字符串指令
字符串长度
1
len=${#variableName}
字符串截取
1
2
3
4
5
6
7!/bin/bash
${variableName:<pos> <len>}
str ="0123456789"
echo ${str:1} #输出:123456789
echo ${str:1:2} #输出:12
echo ${str:-3} #当<pos>开始位置为负数时,自动变为0。输出:0123456789expr
1
2
3
4expr index <string> <chars> #查找<chars>首字母在<string>中出现的位置,没有则返回0。
expr substr <string> <pos> <len> #相当于${variableName:<pos> <len>}
expr length <string> #相当与${#variableName}
expr match <string> <regexp> #正则匹配
数组
bash支持一维数组,但不支持多维数组,并且没有限定数组大小
定义
1
arrName=(v0 v1 v2 ...)
或
1
2
3
4
5
6arrName=(
v0
v1
v2
..
)或者
1
2
3arrName[0]=v0
arrName[1]=v1
...获取
1
2
3
4
5
6
7echo ${array_name[2]} #读取下标为2的元素
echo ${array_name[*]} #读取所有元素
echo ${array_name[@]} #读取所有元素
echo ${#array_name[*]} #获取数组长度
echo ${#array_name[@]} #获取数组长度
echo ${#array_name[1]} #获取数组中单个元素的长度输出
1
2
3
4
5
6value2
value0 value1 value2 value3
value0 value1 value2 value3
4
4
6
函数
基础
定义
格式如下:
1
2
3
4function funcName(){
commands
[return value]
}调用
1
funcName [p1 p2 ...]
注意
- 函数调用时不需要加
() - 函数没有
return时,则将会将最后一条命令运行结果作为返回值 - 当
return非整数时,函数只能作为赋值,不能直接运行,否则报return: funcNmae: numeric argument required错误。 - 可以使用
unset .f funcName删除函数定义。 - 如果你希望直接从终端调用函数,可以将函数定义在主目录下的 .profile 文件中。
- 函数调用时不需要加
函数参数
Shell参数获取,与其他语言有点不同,它是直接使用
${n}来获取。
具体查看变量-特殊变量Shell文件的包含(引入)
使用
.或者source关键字声明,格式如下:1
2
3
4
5. fileName
或
. "fileName"
或者
source fileName注意:不能之间引用目录
原文作者: hxkuan