4.2 编写Shell脚本(P80-85)——《Linux就该这么学》学习笔记16

一、Shell 脚本命令的2种工作方式

交互式:输入一条(命令),执行一条

批处理:事先写好一个Shell脚本,一次性执行里面的所有命令

备注:Shell脚本不仅包含命令,还包含操作逻辑(if,for,while,case等)

二、编写简单的Shell脚本

格式

$ vim filename.sh

"""

#!/bin/bash

#[注释]

[命令1]

[命令2]

…………

"""

三、执行Shell脚本

1. 通过bash 解释器

$ bash filename.sh

2. 输入完整路径

. /filename.sh

提示权限不足时????

chmod u+x ./filename.sh

四、接收用户参数

$0:Shell脚本文件名

$1、$2、$3……$n分别对应第1~n个位置的参数值

4.2 编写Shell脚本(P80-85)——《Linux就该这么学》学习笔记16
Shell脚本中的参数位置变量

$#:总共的参数个数

$*:所有位置的参数值

$?:上一次命令的执行返回值(0为执行成功,2为出现error)

4.2 编写Shell脚本(P80-85)——《Linux就该这么学》学习笔记16
demo2.sh内容
4.2 编写Shell脚本(P80-85)——《Linux就该这么学》学习笔记16
demo2.sh执行结果

五、判断用户参数

条件测试语句

格式????

[ 条件测试表达式 ]

注: [ ]两边有空格

若条件成立返回数字 0,否则返回其他随机数值

1. 文件测试 (语句)

4.2 编写Shell脚本(P80-85)——《Linux就该这么学》学习笔记16
文件测试参数

例:判读1.txt是否为目录

$ [ -d 1.txt ] 

$ $?

是则输出0

不是则输出非0整数(如1)

2. 逻辑测试(语句)

&&:前面的执行成功,才执行后面的

||:前面的执行失败,才执行后面的

!:取反

例:判断1.txt是否存在

$ [ -e 1.txt ] && echo "exist 1.txt" || echo "not exist 1.txt"

存在则输出 exist 1.txt

不存在则输出 not exist 1.txt

3. 整数值比较(语句)

4.2 编写Shell脚本(P80-85)——《Linux就该这么学》学习笔记16
整数比较运算符

例:判断1028是否大于1020

$ [ 1028 -gt 1020 ]

$ $?

输出:0

4. 字符串比较(语句)

4.2 编写Shell脚本(P80-85)——《Linux就该这么学》学习笔记16
字符串比较运算符

例:判断当前语言环境变量是否为“zh_CN.UTF-8”

$ [ $LANG = 'zh_CN.UTF-8' ] && echo "yes" || echo "no"

输出:yes

备注:[ ]前后加空格!!!!!!

六、awk

逐行读入文件,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理

$awk  '{pattern + action}'  file

4.2 编写Shell脚本(P80-85)——《Linux就该这么学》学习笔记16
awk查看文件
4.2 编写Shell脚本(P80-85)——《Linux就该这么学》学习笔记16
awk查看可用内存

4.3 Shell脚本中的4个流程控制语句(P85-93)——《Linux就该这么学》学习笔记17