linux13 shell脚本.ppt
合集下载
Linux的shell编程ppt课件
-w文件名:如果文件存在且可写则为真
-x文件名:如果文件存在且可执行则为真
-s文件名:如果文件存在且至少有一个字符则为真
-d文件名:如果文件存在且为目录则为真
-f文件名:如果文件存在且为普通文件则为真
-e文件名:如果文件存在则为真
shell就是一个命令行解释器。 一般的Linux系统都将bash作为默认的shell。
.
2
5.2几种流行的shell
目前流行的shell有ash、bash、ksh、csh、 zsh等, bash是Linux系统默认使用的shell。 可以用下面的命令来查看shell的类型:
#echo $SHELL SHELL是一个环境变量,它记录用户所使 用的shell类型。
和当用户在执行某个命令时不想让命令运行时对状态集合如位置参数环境变量当前工作目录等的改变影响到下面语句的执行时就应该把这些命令放在圆括用于将顺序执行的命令的输出结果用于另一个命令的输入管道方式
第5章Linux的shell编程
.
1
5.1什么是shell
当一个用户登录Linux系统之后,系统初始化 程序init就为每一个用户运行一个称为 shell(外壳)的程序。
.
9
shell变量(续)
Bourne Shell有如下四种变量: ▪ 本地变量(用户自定义变量 ) ▪ 位置变量即 shell script之参数 ▪ 预定义变量(特殊变量) ▪ 环境变量(参考shell定制部分)
.
10
5.4.1.1本地变量(用户自定义变量)
本地变量在用户现在的shell生命期的脚 本中使用。
such file or directory $ echo $? 1
.
linux课件 Shell及常用命令.ppt
– 当输入一个命令的前面几个字符时敲击键盘的Tab键,系统会 对该命令进行自动补全。
– 包含了自身的帮助功能,只要在提示符下面键入help <命令> ,就可以得到相关帮助。
开始使用Shell
• 在Ubuntu中可以有许多方式打开Shell,最普 通的方式是通过终端打开。单击桌面菜单的 【应用程序】|【附件】|【终端】命令,打开 终端窗口。
• 虚拟控制台使得Linux成为一个真正的多用 户操作系统.
2020年11月3日
什么是Shell
• Shell是Linux中的一个命令行解释器,是和Linux内 核交流的桥梁。
• Shell的强大之处在于其既是一种命令语言,又是一 种程序设计语言。
– 作为命令语言,它可以互动式地解释和执行用户输入的命 令;
什么是Linux终端
• 显示器和键盘合称为终端,因为能对系统进 行控制,又称为控制台。
• 物理控制台和虚拟控制台
– 用软件实现的Linux终端称为虚拟控制台。
• Linux终端采用字符命令行工作方式,用户 通过键盘输入命令进行操作。
• 通过Linux终端对系统进行控制。
2020年11月3日
一、 Shell介绍
• BASH Shell使用户能更有效的控制计算机系统。
为什么选择BASH Shell
• 目前有很多不同的Linux Shell可供选择,但Ubuntu操作 系统默认使用的Shell是BASH Shell。其特点是:
– 可以像DOS命令一样,用上下方向键寻找已经输入过的命令 ,不用重新输入,节约了时间。
2020年11月3日
BASH Shell是什么
• BASH Shell是Shell的一种。Ubuntu操作系统默认使 用的Shell。
– 包含了自身的帮助功能,只要在提示符下面键入help <命令> ,就可以得到相关帮助。
开始使用Shell
• 在Ubuntu中可以有许多方式打开Shell,最普 通的方式是通过终端打开。单击桌面菜单的 【应用程序】|【附件】|【终端】命令,打开 终端窗口。
• 虚拟控制台使得Linux成为一个真正的多用 户操作系统.
2020年11月3日
什么是Shell
• Shell是Linux中的一个命令行解释器,是和Linux内 核交流的桥梁。
• Shell的强大之处在于其既是一种命令语言,又是一 种程序设计语言。
– 作为命令语言,它可以互动式地解释和执行用户输入的命 令;
什么是Linux终端
• 显示器和键盘合称为终端,因为能对系统进 行控制,又称为控制台。
• 物理控制台和虚拟控制台
– 用软件实现的Linux终端称为虚拟控制台。
• Linux终端采用字符命令行工作方式,用户 通过键盘输入命令进行操作。
• 通过Linux终端对系统进行控制。
2020年11月3日
一、 Shell介绍
• BASH Shell使用户能更有效的控制计算机系统。
为什么选择BASH Shell
• 目前有很多不同的Linux Shell可供选择,但Ubuntu操作 系统默认使用的Shell是BASH Shell。其特点是:
– 可以像DOS命令一样,用上下方向键寻找已经输入过的命令 ,不用重新输入,节约了时间。
2020年11月3日
BASH Shell是什么
• BASH Shell是Shell的一种。Ubuntu操作系统默认使 用的Shell。
Linux Shell介绍.ppt
Linux 操作系统
Linux Shell 介绍
主要内容和学习要求
知道什么是 shell 和一些常见的 shell 掌握 bash 的基本功能(通配符、别名等) 了解 bash 的启动脚本 了解 shell 变量,学会查看和修改变量的值 理解如何定制 bash
Shell 简介
shell 是系统的用户界面,它提供了用户和 Linux (内核)之间进行交互操作的一种接口。用户在命 令行中输入的每个命令都由 shell 先解释,然后传给 Linux 内核去执行。
bash 是现在大多数 Linux 系统的缺省 shell bash 与 Bourne shell 完全向后兼容,并且在 Bourne shell 的基础上增加和增强了很多特性。bash 也包含了 很多 csh 和 ksh 里的优点。bash 有很灵活和强大的编 程接口,同时又有很友好的用户界面。
stty –a 可以看到更多的快捷键。
通配符
通配符
bash 提供许多功能用来帮助用户节省输入命令的时间, 其中最常用的一种方法就是使用通配符。
通配符就是一些特殊的字符,可以用来在引用文件名 时简化命令的书写。用户在使用时可以用通配符来指定
一种模式,即所谓的 “模式串” (pattern),然后 shell
通配符 “*” 有时可以将几百的命令件,现在要删除扩展名为“.old” 的文件,如果有几百个这样的文件,逐个删除显然很麻 烦,这时可以使用通配符: rm *.old
Bash 的功能
命令行 当用户打开一个 (虚拟) 终端时,可以看到一个 shell 提示符,标识了命令行的开始。用户可以在提示符 后面输入任何命令及参数
command [选项] [参数]
例:ls –l /home/jypan/linux/
Linux Shell 介绍
主要内容和学习要求
知道什么是 shell 和一些常见的 shell 掌握 bash 的基本功能(通配符、别名等) 了解 bash 的启动脚本 了解 shell 变量,学会查看和修改变量的值 理解如何定制 bash
Shell 简介
shell 是系统的用户界面,它提供了用户和 Linux (内核)之间进行交互操作的一种接口。用户在命 令行中输入的每个命令都由 shell 先解释,然后传给 Linux 内核去执行。
bash 是现在大多数 Linux 系统的缺省 shell bash 与 Bourne shell 完全向后兼容,并且在 Bourne shell 的基础上增加和增强了很多特性。bash 也包含了 很多 csh 和 ksh 里的优点。bash 有很灵活和强大的编 程接口,同时又有很友好的用户界面。
stty –a 可以看到更多的快捷键。
通配符
通配符
bash 提供许多功能用来帮助用户节省输入命令的时间, 其中最常用的一种方法就是使用通配符。
通配符就是一些特殊的字符,可以用来在引用文件名 时简化命令的书写。用户在使用时可以用通配符来指定
一种模式,即所谓的 “模式串” (pattern),然后 shell
通配符 “*” 有时可以将几百的命令件,现在要删除扩展名为“.old” 的文件,如果有几百个这样的文件,逐个删除显然很麻 烦,这时可以使用通配符: rm *.old
Bash 的功能
命令行 当用户打开一个 (虚拟) 终端时,可以看到一个 shell 提示符,标识了命令行的开始。用户可以在提示符 后面输入任何命令及参数
command [选项] [参数]
例:ls –l /home/jypan/linux/
《Linux的Shell》PPT课件
elif [ 条件判断式二 ]; then 当条件判断式二成立时,可以进行的指令工作内容;
else 当条件判断式一与二均不成立时,可以进行的指令工作内容; fi
[ ]判断符号可以连接 && 代表 AND ; || 代表 or ;==代表等值 ;!=代表不等值
如: if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
Bash shell 的环境设置
登录讯息显示数据
/etc/issue, /etc/, /etc/motd
系统环境设定文档
/etc/sysconfig/i18n(语言)、/etc/profile(重要环境变量) 、/etc/bashrc、 /etc/man.config (帮助路径)
test -z $filename 判断字符串是否为空
test n1 -eq n2
判断两字符是否相等
[ ]判断符号+if ..... then ..... fi
如:[ -z “$HOME” ] 判断HOME是否为空 [□“$HOME”□==□“$MAIL”□] 判断两变量是否一致 [ “$yn” == “Y” -o “$yn” == “y” ] 与判断
个人环境设定文档(推荐)
~/.bash_profile, ~/.bash_login, ~/.profile
login shell
~/.bashrc(只要启动shell就会被执行)
~/.bash_history(记录历史命令,不安全因素) ~/.bash_logout(登出时缺省执行)
non-login shell
Linux的Shell
else 当条件判断式一与二均不成立时,可以进行的指令工作内容; fi
[ ]判断符号可以连接 && 代表 AND ; || 代表 or ;==代表等值 ;!=代表不等值
如: if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
Bash shell 的环境设置
登录讯息显示数据
/etc/issue, /etc/, /etc/motd
系统环境设定文档
/etc/sysconfig/i18n(语言)、/etc/profile(重要环境变量) 、/etc/bashrc、 /etc/man.config (帮助路径)
test -z $filename 判断字符串是否为空
test n1 -eq n2
判断两字符是否相等
[ ]判断符号+if ..... then ..... fi
如:[ -z “$HOME” ] 判断HOME是否为空 [□“$HOME”□==□“$MAIL”□] 判断两变量是否一致 [ “$yn” == “Y” -o “$yn” == “y” ] 与判断
个人环境设定文档(推荐)
~/.bash_profile, ~/.bash_login, ~/.profile
login shell
~/.bashrc(只要启动shell就会被执行)
~/.bash_history(记录历史命令,不安全因素) ~/.bash_logout(登出时缺省执行)
non-login shell
Linux的Shell
《LinuxSHELL编程》课件
部变量只在定义它的脚本或函数中有效,而全局变量在所有脚本和函数
中都有效。
Shell 中的控制结构
01
if语句
02
if语句用于根据条件执行不同的 命令块。条件表达式使用test命 令或方括号([])括起来。例如 ,`if [ $num -gt 10 ]; then echo "Number is greater than 10"; fi`。
Shell 编程的未来发展
Shell 编程的普及
随着 Linux 系统在服务器、云计算和物联网等领域的广泛应用, Shell 编程将更加普及。
Shell 编程的智能化
随着人工智能技术的发展,Shell 编程将与人工智能技术结合,实现 更智能化的自动化任务。
Shell 编程的跨平台性
随着跨平台软件的需求增加,Shell 编程将更加注重跨平台兼容性, 以便在不同操作系统上运行。
case语句
case语句用于根据变量的值执 行不同的命令块。它允许用户 匹配多个值并执行相应的操作 。例如,`case $variable in pattern1) command1;; pattern2) command2;; esac` 。
03
while语句
04
while语句用于重复执行一个命 令块,直到条件不再满足。条件 表达式使用test命令或方括号( [])括起来。例如,`while [ $num -lt 10 ]; do echo $num; num=$((num+1)); done`。
进程等待
使用wait()系统调用等待子进程结束 ,并获取子进程的退出状态码。
进程信号
使用信号机制对进程进行控制和管理 ,如发送信号给进程、捕获信号等。
linuxShell脚本PPT教学课件
Shell Scripts
默认变量类型是字符串,其他变量声明用d:
语法: declare [-afir] 变量名称[=初始值] 含义:-a定义数组,-f定义函数,-i定义整数,-r定
义只读变量
Shell Scripts
变量声明举例:
a1=10 b1=20 c1=$a1*$b1 echo $c1 declare -i a2=10 declare -i b2=20 declare -i c2=$a2*$b2 echo $c2
跟用户交互read:
echo input u name: read name echo u name is $name
参数的读取:
$0代表命令或者脚本名称,$1代表第一个参数,一 直到9
实验
Shell Scripts
shift命令
作用:将参数左移 语法:shift [N] 含义:将命令行参数左移N个位置,默认为1 举例:
匹配0次或者1次,也可以用于表示单一字符
*
匹配任意次,也可以用于表示任意字符
[list]
列表中的字符
[range]
列表中范围内的字符,范围用“-”分隔
正则表达式
正则表达式
[^list]
不属于list的元素,与 [list] 相反
[^range]
不属于range的元素,与 [range]相反
\{n\}
举例:
echo $(( 100 / 3 )) myvar="56" echo $(( $myvar + 12 )) echo $(( $myvar - $myvar )) myvar=$(( $myvar + 1 )) echo $myvar
嵌入式linuxshell脚本PPT课件
编辑模式:
◦ 在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文 件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母 之后才会进入编辑模式。而如果要回到一般模式时, 则必须要按下『Esc 』这个按键即可退出编辑模式。
命令模式:
◦ 在一般模式当中,输入『 : / ? 』三个中的任何一个按钮,就可以将光 标移动到最底下那一行。在这个模式当中, 可以提供你『搜寻资料』的 动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则 是在此模式中完成的!
16
Shell的发展与分类
Bsh在20世纪70年代中期诞生于新泽西的 Csh在20世纪80年代早期诞生于加利福
AT&T贝尔实验室,具有较强的脚本编程 尼亚大学 ,使用C语言的语法,用户命令
功能
交互更加方便
Bsh
Csh
Ksh结合了Bsh和Csh两者的功能优势,兼 Bash是Bsh的升级替代品,吸收了Ksh中
2021/3/10
18
Shell 变量
变量:简单的说,就是让某一个特定字符串代表不固 定的内容就是了。
变量类型:
◦ 环境变量 ◦ 预定义变量 ◦ 位置变量 ◦ 用户自定义变量(本地变量)
2021/3/10
19
环境变量
使用set命令查看环境变量
set
常用环境变量
◦ USER UID SHELL HOME PWD PATH
[Ctrl]+r 重做上一次操作 :e! 恢复文件到初始状态
2021/3/10
10
文本删除和替换
命令类型 字符
单词 行 光标到行尾部分
删除
替换
x(向后,delete) r X(向前, Backspace)
◦ 在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文 件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母 之后才会进入编辑模式。而如果要回到一般模式时, 则必须要按下『Esc 』这个按键即可退出编辑模式。
命令模式:
◦ 在一般模式当中,输入『 : / ? 』三个中的任何一个按钮,就可以将光 标移动到最底下那一行。在这个模式当中, 可以提供你『搜寻资料』的 动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则 是在此模式中完成的!
16
Shell的发展与分类
Bsh在20世纪70年代中期诞生于新泽西的 Csh在20世纪80年代早期诞生于加利福
AT&T贝尔实验室,具有较强的脚本编程 尼亚大学 ,使用C语言的语法,用户命令
功能
交互更加方便
Bsh
Csh
Ksh结合了Bsh和Csh两者的功能优势,兼 Bash是Bsh的升级替代品,吸收了Ksh中
2021/3/10
18
Shell 变量
变量:简单的说,就是让某一个特定字符串代表不固 定的内容就是了。
变量类型:
◦ 环境变量 ◦ 预定义变量 ◦ 位置变量 ◦ 用户自定义变量(本地变量)
2021/3/10
19
环境变量
使用set命令查看环境变量
set
常用环境变量
◦ USER UID SHELL HOME PWD PATH
[Ctrl]+r 重做上一次操作 :e! 恢复文件到初始状态
2021/3/10
10
文本删除和替换
命令类型 字符
单词 行 光标到行尾部分
删除
替换
x(向后,delete) r X(向前, Backspace)
《Shell脚本基础》PPT课件
1
Shell脚本基础
主讲:刘晓涛
议程
创建和执行shell脚本 使用echo命令显示消息 创建变量 使用本地和全局变量 计算表达式 使用if构造执行基于条件的shell脚本 使用case构造执行基于条件的shell脚本 识别用于执行重复任务的while、for、和until 构造 在shell脚本中使用break和continue语句 控制进程的执行 计算命令的开始到结束之间的时间
$ read fname
本地和全局 Shell 变量
局部变量 当引用shell时,只有创建它的shell能够知道 到变量的存在
全局变量 称为子shell shell中创建的变量局部于创建它的shell,除 非使用export命令特别指出是全局的
9
环境变量 通过改变这些变量的值,用户能够定制此环境
10
本地和全局 Shell 变量(续)11
环境变量(续) PATH变量 包含一列用冒号定界的目录的路径名字, 便于可执行程序的搜索 PS1变量 PS1(Prompt String 1)变量包含了shell提 示符,$符号 $ PS1="HELLO>" <Enter> HELLO> New prompt
变量
创建变量 可以在任何时间通过简单的赋值来创建。 语法 <variable name>=<value> Linux中的所有变量都被当作字符串。 引用变量 $符号用于引用一个变量的内容
7
variable1=${variable2}
8
读入值给变量 在执行shell脚本时,shell还允许用户 从键盘中输入一个值给变量。可以使用 read命令来做
Shell脚本基础
主讲:刘晓涛
议程
创建和执行shell脚本 使用echo命令显示消息 创建变量 使用本地和全局变量 计算表达式 使用if构造执行基于条件的shell脚本 使用case构造执行基于条件的shell脚本 识别用于执行重复任务的while、for、和until 构造 在shell脚本中使用break和continue语句 控制进程的执行 计算命令的开始到结束之间的时间
$ read fname
本地和全局 Shell 变量
局部变量 当引用shell时,只有创建它的shell能够知道 到变量的存在
全局变量 称为子shell shell中创建的变量局部于创建它的shell,除 非使用export命令特别指出是全局的
9
环境变量 通过改变这些变量的值,用户能够定制此环境
10
本地和全局 Shell 变量(续)11
环境变量(续) PATH变量 包含一列用冒号定界的目录的路径名字, 便于可执行程序的搜索 PS1变量 PS1(Prompt String 1)变量包含了shell提 示符,$符号 $ PS1="HELLO>" <Enter> HELLO> New prompt
变量
创建变量 可以在任何时间通过简单的赋值来创建。 语法 <variable name>=<value> Linux中的所有变量都被当作字符串。 引用变量 $符号用于引用一个变量的内容
7
variable1=${variable2}
8
读入值给变量 在执行shell脚本时,shell还允许用户 从键盘中输入一个值给变量。可以使用 read命令来做
shell脚本教程详细讲解(很好).ppt
14
三种模式间的转换关系
文本输入状态
按ESC键
按 A,I,S,C,O 等命令
按“:”键
命令状态
行编辑状态
执行非退出命 令,如w
15
案例练习
1. 请在 /tmp 这个目录下建立一个名为 vitest 的目录; 2. 进入 vitest 这个目录当中; 3. 将 /etc/man.config 拷贝到本目录底下 4. 使用 vi 开启本目录下的 man.config 这个档案; 5. 在 vi 中设定一下行号; 6. 移动到第 58 行,向右移动 40 个字符,请问您看到的双引
vi –R file_name,以只读方式打开文件
8
3、VI的退出
冒号进命令行模式下:
:q! 不存档强制退出。
:w 保存但不退出,w(rite)后可加所要存档的文档 名。
:wq 存档后退出。
命令模式下按zz,功能与 :wq 相同。
:x 与:wq相同
命令模式:
ZZ、ZQ
保存/不保存退出
行 11. 11G 之后,再给他 20dd即可删除 20 行了; 12. :w man.test.config 13. 29G 之后,再给他 15x 即可删除 15 个字符; 14. :wq!
17
二、SHELL变量与语法
SHELL变量与语法
1. Shell概述 2. shell变量和符号 3. shell控制流程语法 4. shell中的输出重定向 5. 脚本实例
nd上下光标键:
删除当前行之上、下的几行文 本(包括当前行)
u:恢复刚才被修改的文本 U:恢复光标所在行的所有修改
.:重复上一次命令的操作
11
三种模式间的转换关系
文本输入状态
按ESC键
按 A,I,S,C,O 等命令
按“:”键
命令状态
行编辑状态
执行非退出命 令,如w
15
案例练习
1. 请在 /tmp 这个目录下建立一个名为 vitest 的目录; 2. 进入 vitest 这个目录当中; 3. 将 /etc/man.config 拷贝到本目录底下 4. 使用 vi 开启本目录下的 man.config 这个档案; 5. 在 vi 中设定一下行号; 6. 移动到第 58 行,向右移动 40 个字符,请问您看到的双引
vi –R file_name,以只读方式打开文件
8
3、VI的退出
冒号进命令行模式下:
:q! 不存档强制退出。
:w 保存但不退出,w(rite)后可加所要存档的文档 名。
:wq 存档后退出。
命令模式下按zz,功能与 :wq 相同。
:x 与:wq相同
命令模式:
ZZ、ZQ
保存/不保存退出
行 11. 11G 之后,再给他 20dd即可删除 20 行了; 12. :w man.test.config 13. 29G 之后,再给他 15x 即可删除 15 个字符; 14. :wq!
17
二、SHELL变量与语法
SHELL变量与语法
1. Shell概述 2. shell变量和符号 3. shell控制流程语法 4. shell中的输出重定向 5. 脚本实例
nd上下光标键:
删除当前行之上、下的几行文 本(包括当前行)
u:恢复刚才被修改的文本 U:恢复光标所在行的所有修改
.:重复上一次命令的操作
11
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
eg: test -e /home/swh/loveis.txt && echo “exist” || echo “not exist” 判断文件loveis.txt是否存在并告知用户
test -r godisagirl -a -x godisagirl
当godisagirl的权限为可读可执行时返回true
eg: test -s /usr/song/godisagirl 判断godisagirl是否非空
判断指令test
参数
含义
file1 -nt file2 (newer than)判断 file1 是否比 file2 新 file1 -ot file2 (older than)判断 file1 是否比 file2 旧
否为空
• [ ]之间可以用&&或|| 结合 • [ ]中的变量用双引号设定,常量则单双皆可
脚本中的数据类型
• 字符 • 整数 • 指针:内存中某地址的索引 • 字符串
• 数组结构
• 使用方法为${array[index]},下标index从0开 始计数
脚本中的数据类型
• 类型声明指令declare
脚本范例
• hello-sh01.sh
功能:每次执行都显示一个“hello, everybody!”的字符串 注意:在脚本开头注释部分要尽量详细的将本 脚本设计功能、修改历史写清楚,最好将编写 人员的联系方式也加入其中
在脚uservar-sh02.sh
功能:将用户先后输入的两个整数求和并输出 注意:使用read指令实现用户与脚本的交互 read [-p 提示字符串 键盘输入信息] [-t 等待秒数]
判断指令test
参数
含义
-e filename 判断名为filename的文件是否存在 -f filename 判断名为filename的文件是否为file类型文件 -d filename 判断名为filename的文件是否为目录文件
-b filename 判断名为filename的文件是否为块设备文件 -c filename 判断名为filename的文件是否为字符设备character device -L filename 判断名为filename的文件是否为链接文件
• i、a、f、r、x分别用来声明整数、数组、函 数、只读类型变量
• 默认情况下是字符和字符串类型 • 脚本语言是弱类型语言
脚本中的数据类型
• eg:#!/bin/bash declare -i x=2 declare -i y=3 declare -i z=$y-$x declare -a array=(1 2 3)
第十一讲 shell脚本
知识点
• 脚本的执行方法 • 交互式脚本的编写 • 判断语句格式 • 循环语句格式
Shell Script
• 定义:
利用 shell 自带功能写的一个程序,该程 序使用纯文本格式,它汇聚了实现用户所需处 理目标的多条指令,并一次性执行,无需编译
• 系统中许多服务均由Shell script启动 • Shell script 的运行速度较慢,且占用的
这个转义符号将回车符号转义为换行但不断行 的符号,实现一行内容多行书写的要求
撰写脚本的要求
• 第一行要说明脚本使用的 shell 名称 • 接着是脚本功能描述、版本信息等内容 • 每个功能程序段前做注释说明
判断指令test
• 该指令利用特定参数实现对文件或数据 的多种判断操作,是脚本文件中常用的 文件处理工具
eg:test a -eq b a的值等于b时返回true
判断符号[ ]
• 利用判断符号[ ]也可以实现上述功能,在[ ]中 出现的就是test指令的各个选项
• 在[ ]中的每个组成部分间必须用空格分隔
eg: [root @swh swh]# [ -n $PATH ] 这里每个组件间都有空格,用来判断变量$PATH是
CPU 资源较多,造成主机资源分配不良
Shell Scripts的用途
• 自动化管理的工具 • 跟踪管理系统的助手 • 简单入侵检测功能 • 执行连续指令 • 简易的文件处理 • 支持跨平台
脚本的执行
• 将 shell.sh 加上可读与可执行 (rx) 权限, 然后就能够以 ./shell.sh 來执行了 eg: ]# chmod 755 hello-sh01.sh ]# ./hello-sh01.sh
回true
判断指令test
参数
含义
n1 -eq/= n2 n1 -ne/!= n2 n1 -gt/> n2 n1 -lt/< n2 n1 -ge n2 n1 -le n2
判断n1是否等于n2 判断n1是否不等于n2 判断n1是否大于n2 判断n1是否小于n2 判断n1是否大于等于n2 判断n1是否小于等于n2
file1 -ef file2 判断 file2 与 file2 是否为同一文件
eg:test yequ -nt juhuatai 判断文件yequ是否比文件juhuatai新
判断指令test
参数 -a -o -z -n
两个条件同时成立 两个条件一个成立 是否为空字符串 是否为非空字符串
含义
eg: test -r yequ -o -w yequ 文件yequ只要满足可写、可读中的一个条件就返
• 以 sh shell.sh 的方式直接执行即可 eg:sh hello-sh01.sh
脚本的执行
• shell是逐字符读入脚本文件的 • 当读入回车后,shell将执行读入的这行指令 • 指令间的空格、空行和Tab将被bash自动忽略 • 当bash读入了一个#后,它就明白从这里开始
到这行结束的内容都是注释而非要执行的内容 • 对用户而言,若一行内容太多,可以使用“\”
eg: test -b /dev/hda1 判断hda1是否为块设备文件
判断指令test
参数
含义
-r filename -w filename -x filename -s filename
判断名为filename的文件是否具有可读属性 判断名为filename的文件是否具有可写属性 判断名为filename的文件是否具有可执行属性 判断名为filename的文件是否为非空文件
test -r godisagirl -a -x godisagirl
当godisagirl的权限为可读可执行时返回true
eg: test -s /usr/song/godisagirl 判断godisagirl是否非空
判断指令test
参数
含义
file1 -nt file2 (newer than)判断 file1 是否比 file2 新 file1 -ot file2 (older than)判断 file1 是否比 file2 旧
否为空
• [ ]之间可以用&&或|| 结合 • [ ]中的变量用双引号设定,常量则单双皆可
脚本中的数据类型
• 字符 • 整数 • 指针:内存中某地址的索引 • 字符串
• 数组结构
• 使用方法为${array[index]},下标index从0开 始计数
脚本中的数据类型
• 类型声明指令declare
脚本范例
• hello-sh01.sh
功能:每次执行都显示一个“hello, everybody!”的字符串 注意:在脚本开头注释部分要尽量详细的将本 脚本设计功能、修改历史写清楚,最好将编写 人员的联系方式也加入其中
在脚uservar-sh02.sh
功能:将用户先后输入的两个整数求和并输出 注意:使用read指令实现用户与脚本的交互 read [-p 提示字符串 键盘输入信息] [-t 等待秒数]
判断指令test
参数
含义
-e filename 判断名为filename的文件是否存在 -f filename 判断名为filename的文件是否为file类型文件 -d filename 判断名为filename的文件是否为目录文件
-b filename 判断名为filename的文件是否为块设备文件 -c filename 判断名为filename的文件是否为字符设备character device -L filename 判断名为filename的文件是否为链接文件
• i、a、f、r、x分别用来声明整数、数组、函 数、只读类型变量
• 默认情况下是字符和字符串类型 • 脚本语言是弱类型语言
脚本中的数据类型
• eg:#!/bin/bash declare -i x=2 declare -i y=3 declare -i z=$y-$x declare -a array=(1 2 3)
第十一讲 shell脚本
知识点
• 脚本的执行方法 • 交互式脚本的编写 • 判断语句格式 • 循环语句格式
Shell Script
• 定义:
利用 shell 自带功能写的一个程序,该程 序使用纯文本格式,它汇聚了实现用户所需处 理目标的多条指令,并一次性执行,无需编译
• 系统中许多服务均由Shell script启动 • Shell script 的运行速度较慢,且占用的
这个转义符号将回车符号转义为换行但不断行 的符号,实现一行内容多行书写的要求
撰写脚本的要求
• 第一行要说明脚本使用的 shell 名称 • 接着是脚本功能描述、版本信息等内容 • 每个功能程序段前做注释说明
判断指令test
• 该指令利用特定参数实现对文件或数据 的多种判断操作,是脚本文件中常用的 文件处理工具
eg:test a -eq b a的值等于b时返回true
判断符号[ ]
• 利用判断符号[ ]也可以实现上述功能,在[ ]中 出现的就是test指令的各个选项
• 在[ ]中的每个组成部分间必须用空格分隔
eg: [root @swh swh]# [ -n $PATH ] 这里每个组件间都有空格,用来判断变量$PATH是
CPU 资源较多,造成主机资源分配不良
Shell Scripts的用途
• 自动化管理的工具 • 跟踪管理系统的助手 • 简单入侵检测功能 • 执行连续指令 • 简易的文件处理 • 支持跨平台
脚本的执行
• 将 shell.sh 加上可读与可执行 (rx) 权限, 然后就能够以 ./shell.sh 來执行了 eg: ]# chmod 755 hello-sh01.sh ]# ./hello-sh01.sh
回true
判断指令test
参数
含义
n1 -eq/= n2 n1 -ne/!= n2 n1 -gt/> n2 n1 -lt/< n2 n1 -ge n2 n1 -le n2
判断n1是否等于n2 判断n1是否不等于n2 判断n1是否大于n2 判断n1是否小于n2 判断n1是否大于等于n2 判断n1是否小于等于n2
file1 -ef file2 判断 file2 与 file2 是否为同一文件
eg:test yequ -nt juhuatai 判断文件yequ是否比文件juhuatai新
判断指令test
参数 -a -o -z -n
两个条件同时成立 两个条件一个成立 是否为空字符串 是否为非空字符串
含义
eg: test -r yequ -o -w yequ 文件yequ只要满足可写、可读中的一个条件就返
• 以 sh shell.sh 的方式直接执行即可 eg:sh hello-sh01.sh
脚本的执行
• shell是逐字符读入脚本文件的 • 当读入回车后,shell将执行读入的这行指令 • 指令间的空格、空行和Tab将被bash自动忽略 • 当bash读入了一个#后,它就明白从这里开始
到这行结束的内容都是注释而非要执行的内容 • 对用户而言,若一行内容太多,可以使用“\”
eg: test -b /dev/hda1 判断hda1是否为块设备文件
判断指令test
参数
含义
-r filename -w filename -x filename -s filename
判断名为filename的文件是否具有可读属性 判断名为filename的文件是否具有可写属性 判断名为filename的文件是否具有可执行属性 判断名为filename的文件是否为非空文件