bash Shell 总结《二》

前端之家收集整理的这篇文章主要介绍了bash Shell 总结《二》前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


1. 命令的退出状态 (1),(kw: EXIT STATUS)

每一个命令都有一个退出状态,用一个非负的整数表示

状态码0 表示命令运行没有出错

非零状态码表示命令出错

状态码的范围是0-255

命令的退出状态常用于流程控制结构中的条件判断


2. 条件表达式 (2),(kw: CONDITIONAL EXPRESSIONS)

复合命令 [[,内部命令 test 和 [,使用条件表达式来测试文件属性和状态,做字符串比较和算术比较。

形式一:[[ expression ]] 支持正则 [[ good =~ ^g ]]

形式二: [ expression ]

形式三: test expression


逻辑操作符,按优先级从高到低:

!: 非

-a: 与

-o: 或


获取帮助信息:help [[,help test


3. 流程控制 (2),(kw: Compound Commands)

if 分支结构语句,根据条件判断命令的返回值选择运行的代码

if COMMANDS; then

COMMANDS

elif COMMANDS; then

COMMANDS

else

COMMANDS

fi

获取帮助 help if

case case只能等于变量

case 语句也是分支语句,在需要做多条件判断的场合可以替代if语句,是得代码更加简洁

case $word in

pattern1) COMMANDS;;

pattern2) COMMANDS;;

*) COMMANDS;;

esac

获取帮助 help case

while 语句用于循环结构,只要条件判断命令返回0,循环都会一直执行

while COMMANDS

do

COMMANDS

done

获取帮助: help while

for 用于循环结构,每次循环时依次从列表中取一个字符串,当无法从列表中再取到字符串时,循环终止

for NAME in WORDS

do

COMMANDS

done

获取帮助信息:help for

例如:

遍历文件名/字符串

continue,break

continue命令终止当次循环,开始下一轮循环

break敏两个终止整个循环结构

help continue,help break


4. 函数 (2),(kw: FUNCTIONS)

可以把函数想象成脚本中的小脚本。

1. 代码重用

2. 接受参数

3. 有返回值

4. local命令设定只在函数内部使用的变量

5. return 退出函数

6. 位置参数$0与脚本的$0相同

6. 函数库与source 命令

7. export 导出函数给子shell使用


5. 信号 (1),(kw: SIGNALS)

信号是进程间通信的一种方式

1. kill命令给进程发信号

2. trap命令捕捉信息 SIGKILL和SIGSTOP无法捕捉,未捕捉的信息通常会使进程终止


CTRL-C <-- 给前台进程组发SIGINT

CTRL-Z <-- 给前台进程组发SIGTSTP

CTRL-\ <-- 给前台进程组发SIGQUIT

CTRL-D <-- 输出一个EOF 字符


6. 文本处理 (4)

1. 常用文本处理命令:

cat head tail grep sed awk

cut wc sort uniq tr tac rev

2. 正则表达式常用于文本处理中,支持做更复杂,更高效的文本处理操作

3. 文本处理性能比较

1. 搜索

2. 替换

3. 截取


调试代码:bash -x

托管代码:git

locate -c -m


7. 实例讲解 (6)

1. 脚本范例解析

2. 脚本书写

1. 命令行参数处理

2. 运行环境检查(权限,标记等)

3. 规范错误

4. 记录日志

5. 模块化编程 (函数,变量)

6. 代码对齐与代码风格

7. 代码注释

8. 代码性能

1. 内部命令与外部命令的选择

2. 并发,等待,同步 (flock)

9. 代码调试 (bash -x,bash -n)

10. 版本管理 (git,svn,cvs)

3. 项目示范


写一个程序,实现以下功能

1. 检查远程服务器上的httpd 服务是否正常工作,

并记录检查结果

2. 提供增加,查看,修改删除功能

3. 只有root 用户才能写入检查记录,其他人可以查询

4. 避免多个进程同时写检查记录,

如果出现写冲突,

应该返回相应的错误

5. 除了记录检查记录之外,程序还应该对每次运行,

每次错误做记录

猜你在找的Bash相关文章