if
语法
单分支:
1 | //第一种 |
条件表达式可以参考第二部分的内容,第二种的相当于用分号进行了换行。
双分支:
1 | if <条件表达式> |
《Linux基础-Shell规范和执行 》的[ -f "$file" ] && echo 1 || echo 0
就等于:
1 | if [ if "$file" ] |
多分支:
1 | if <条件表达式1> |
配置邮箱和密码:
1 | #配置邮箱和用户名密码 |
扩展:
在服务器本地监控端口的命令有netstat、ss、lsof;远程监控服务器本地端口的命令有telnet、nmap、nc(可能需要安装)。
1 | #查看3306端口的进程数 |
函数
语法
1 | function name(){ |
其中function可以省略不写.
- 函数的定义必须在要执行的程序前面定义或加载
- 调用函数时,直接使用函数名即可
- 函数执行时,会和调用它的脚本共用变量
- shell执行系统中各种程序的执行脚本为:系统别名-函数-系统命令-可执行文件
- return n是退出函数,exit n是退出shell并返回一个返回值给执行程序的当前shell
- 如果将函数存放在独立的文件中,被脚本加载时,需要使用source
- 带参数的函数:name 参数1 参数2
case
1 | case "变量" in |
注意缩进。
while
1 | while <条件表达式> |
拓展:让shell脚本在后台运行的方法:sh 1.sh &
,ctrl+c:停止执行脚本或任务,ctrl+z:暂停执行脚本或任务,bg:将当前脚本或任务放到后台执行,bg可以理解为background,fg:将当前脚本放到前台执行,如果有多个任务,可以使用fg 加数字表示调出脚本任务,jobs:查看当前执行的脚本或任务,kill:关闭执行的脚本任务,即以kill % 任务编号的形式关闭脚本,这个任务编号可以通过jobs来获得。
使用场景:
执行守护进程,以及实现我们希望循环执行不退出的应用,或者频率小于1分钟的循环处理。
for和select
1 | for 变量名 in 变量取值列表 |
如果”in 变量取值列表”省略,那么缺省为$@。
1 | for((exp1: exp2; exp3)) |
使用场景:
有限次的循环处理
1 | select 变量名 [in 菜单取值列表] |
如果”in 菜单取值列表”省却,那么缺省为$@。
循环控制
- break:如果后面有正整数,表示跳出循环的层数,如果没有则跳出整个循环
- continue:如果后面有正整数,表示跳出到第n层继续循环,如果没有则开始下一次循环
- exit:后面跟正整数表示退出shell的的返回值,在下一个shell里可以通过”$?”来获取返回值
- return:用于在函数中作为退出函数的返回值,在下一个shell里可以通过”$?”来获取返回值
数组
语法
1 | array=(1 2 3)##推荐使用 |
数组的输出
1 | ##打印第二个元素(下标从0开始) |
数组赋值
1 | ##添加或修改数组元素 |