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. 除了记录检查记录之外,程序还应该对每次运行,

每次错误做记录

原文地址:http://blog.51cto.com/395469372/2097439

时间: 2024-11-13 09:00:03

bash Shell 总结《二》的相关文章

bash shell学习 01(配置和启动脚本)

bash是 Bourne Again Shell简称 ,从unix系统的sh发展而来 查看当前shellecho $SHELL查看系统支持的shellcat /etc/shells cd /binls -la *sh 一. bash shell的配置变量可分为自定义变量和环境变量他们作用范围不同set 可以查看所有变量set|more 查看 enter一行一行查看set|less enter换行 pagedown换页 q退出 env只能查看环境变量 bash shell的设置方式1.通过自定义变

Bash shell 的算术运算有四种方式

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1:使用 expr 外部程式加法 r=`expr 4 + 5`echo $r注意! '4' '+' '5' 这三者之间要有空白r=`expr 4 * 5` #错误乘法 r=`expr 4 \* 5`~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2:使用 $(( ))r=$(( 4 + 5 ))echo $r~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~3:使用 $[ ]r=$[ 4 + 5

第3章 基本的bash shell命令

启动shell GNU bash shell提供对Linux系统交互式访问.他以常规程序运行,通常在用户登录终端时启动.登录时具体启动那种shell依据用户配置文件/etc/passwd . /etc/passwd 包含所有系统用户账户列表以及每个用户的基本信息.eg:其中一个条目 christine:x:501:501:Christine Bresnahan:/home/christine:/bin/bash 说明: 每个条目有7个字段,字段之间用冒号“:”分隔 用户名 用户密码(如果密码存储

bash shell环境变量

$* 将所有命令行参数当做单个文本值包含 [email protected] 将所有命令行参数当做独立的文本值包含 $# 命令行参数数目 $? 最近使用的前端进程的退出状态码 $- 当前命令选项标记 $$ 当前shell的进程ID(PID) $! 最近执行的后台进程PID $0 来自命令行的命令名称 $_ shell的绝对路径名 BASH 用来调用shell的全文件名 BASH_ARGC 当前子函数中的参数数目 BASH_ARGV 含有所有指定命令行参数的数组 BASH_COMMAND 当前正在

Bash shell使用环境的终端的环境设置:stty

Bash shell使用环境的终端的环境设置:stty stty -a 将当前所有的stty参数列出来 intr:给正在运行的程序发送中断信号 quit:给正在运行的程序发送退出信号 erase:向前删除字符 kill:删除命令行上的文字 eof:文件结束,输入结束 start:重启暂停的输出 stop:停止当前的输出 susp:给正在运行的程序发送一个终端停止信号 rprnt:输入命令时提示使用过的历史命令 werase:删除命令行的最后一个字 ^可以理解为Ctrl键,所以intr的快捷键就是

linux杂记(十)?what is BASH Shell

first,what is shell?其实只要是碰过计算机的,对于OS(Operation System操作系统,不管是linux.unix.windows)有点概念的人大多都听过这个名词,因为只要有OS那么就离不开Shell.其实Shell就是将我们输入的指令与kernel(核心)的沟通,使kernel可以控制hardware硬件(例如声卡,网卡,显卡)来正确无误工作. 基本上,替我们工作的是[hardware],控制硬件的是[kernel],而我们user则是利用[shell]控制一些ke

bash shell学习-基础 (笔记)

When you hoist the sails to cross the sea, you willride the wind and cleave the waves. "长风破浪会有时,直挂云帆济沧海" 参考资料:鸟哥的Linux私房菜 基础学习篇(第三版) 一.认识shell 1.什么是shell shell是一种“提供使用者界面”来实现用户与内核通信的软件(命令解释器) 2.为什么要学习shell ①命令行界面的shell在各大Linux发行版中都一样: ②远程管理时命令行界

第十一章、认识与学习 BASH Bash Shell 的操作环境

Bash Shell 的操作环境: 配置值分为系统整体配置值与各人喜好配置值, 仅是一些文件放置的地点不同! 路径与命令搜寻顺序 一个命令 (例如 ls) 被下达时, 到底是哪一个 ls 被拿来运行? 以相对/绝对路径运行命令,例如『 /bin/ls 』或『 ./ls 』: 由 alias 找到该命令来运行: 由 bash 内建的 (builtin) 命令来运行: 透过 $PATH 这个变量的顺序搜寻到的第一个命令来运行. 可以发现ls有颜色但是/bin/ls则没有颜色. 因为 /bin/ls

Linux 常用命令解析及Bash Shell脚本用法示例

 摘要 Linux 命令是基于文本格式输入输出的一种程序,按照Unix哲学中强调的程序功能简单,输入宽松,输出严谨,各种程序组合可以具有更强大的功能,而具有这种灵活性的主要原因是Linux规定程序的输入输出必须坚持文件流格式,即文本格式,而这就是Linux系统的核心之一. 对于Bash,即Shell的一种,为现在主流Linux发行版本默认的命令行解释器,是一种功能强大的工具,可以实现对Linux支持的程序命令的组合,从而实现强大功能.类似于Window系统的bat文件,Bash具有更为强大的

bash shell 数字时间钟表

在某行或者某个位置,打印出"YY/MM/DD HH:MM:SS" 先确定位置 再输出即可 注:有关时间格式到问题 %Y: %B: %d %H:%M:%S 定位以及光标到问题: tput cup 10 10 tput sc, tput rc, tput civis, tput cnorm #!/bin/sh tput civis while true do         tput sc         #tput clear         tput cup 17 10