null第10章 shell程序设计 第10章 shell程序设计 主要内容主要内容Shell的作用
Shell程序的编辑和运行
基于Bash的Shell程序设计
变量声明
表达式
条件判断
控制结构
参数访问Shell的作用Shell的作用shell是用户和系统内核之间的接口程序
shell是命令解释器
在本章中,shell指linux的终端 即解释用户命令和shell程序的文字终端用户linux下的shelllinux下的shell用户使用shell的设定
通过查看/etc/passwd文件可以查看用户使用的shell类型
例子: /etc/passwd部分节选
webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin htt:x:100:101:IIIMF Htt:/usr/lib/im:/sbin/nologin tom:x:500:500:tom:/home/tom:/bin/bash
#可见,tom用户使用的shell为bashlinux下的shelllinux下的shelllinux下的shell
通过cat /ect/shells命令查看安装的shellshell程序shell程序Shell程序的特点及用途:
shell程序可以认为是将shell命令按照控制结构组织到一个文本文件中,批量的交给shell去执行
不同的shell解释器使用不同的shell命令语法
shell程序解释执行,不生成可以执行的二进制文件
可以帮助用户完成特定的任务,提高使用、维护系统的效率
了解shell程序可以更好的配置和使用linux 基于bash的shell程序基于bash的shell程序简单程序示例基于bash的shell程序基于bash的shell程序程序编译和运行过程
一般步骤:
编辑文件
保存文件
将文件赋予可以执行的权限
运行及排错
常用到的命令:
vi,编辑、保存文件
ls -l 查看文件权限
chmod 改变程序执行权限
直接键入文件名运行文件shell程序的编辑和执行shell程序的编辑和执行shell程序设计shell程序设计一般结构
shell类型
函
关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函
数
主过程
#!/bin/bash
function fun1(){
}
......
funciton funn(){
}
...........
.
.
.
.
.
.函数定义shell类型主过程变量的声明和使用变量的声明和使用变量的声明和使用
变量是弱类型的
声明变量不用声明类型
可以存储不同类型的内容
使用灵活
使用时要明确变量的类型
大小写区分
变量声明及赋值格式
格式: 变量=值 (注意:等号两侧不能有空格)
例如: a=”hello ” b=9变量的声明和使用变量的声明和使用变量的引用
格式: $变量名,或者${变量名} 变量名为一个字符用方式一,变量名多于一个字符建议用第2中方式
例子: a=1 abc="hello" echo $a echo ${abc}
常用的运算符常用的运算符整数的算术运算符
+、-、*、/、%;
赋值运算符
+=、-=、*=、/=、%=
位运算符
<<、>>、&、|、~、^;
位运算赋值运算符
<<=、>>=、&=、|=、~=、^=;
逻辑运算符:
&&,||,!,>,>=,<,<=,!=,== 简单数学表达式简单数学表达式expr命令计算一个表达式的值
格式 :expr arg
例子:计算(2+3)×4的值 1、分步计算,即先计算2+3,再对其和乘4 s=`expr 2 + 3` expr $s \* 4 2、一步完成计算: expr `expr 2 + 3 ` \* 4
说明:
运算符号和参数之间要有空格分开;
通配符号(*),在作为乘法运算符时要用\、“”、‘’符号修饰简单数学表达式简单数学表达式let命令
格式:let arg1 [arg2 ......]
例子:计算(2+3)×4的值 let s=(2+3)*4
说明:
与expr命令相比,let命令更简洁直观
当运算符中有<、>、&、|等符号时,同样需要用引号(单引号、双引号)或者斜杠来修饰运算符条件判断条件判断常见的条件:
变量属性;
文件属性;
命令执行结果;
多种条件的逻辑组合;
判断结果的一般定义:
真:0
假:1
格式:
test condition
[ condition ]条件判断条件判断测试文件属性
条件判断条件判断字符串属性 整数关系整数关系整数间关系判断控制结构控制结构控制结构: 根据某个条件的判断结果,改变程序执行的路径。可以简单的将控制结构分为分支和循环两种 。
常见分支结构:
if
case
常见循环结构:
for
while
until if分支if分支格式: 说明:
中括号中的部分可省略;
当条件为真(0)时执行then后面的语句,否则执行else后面的语句;
以fi作为if结构的结束。if 条件1
then
命令
[elif 条件2
then
命令]
[else
命令]
ficase分支case分支格式:说明:
“条件”可以是变量、表达式、shell命令等;
“模式”为条件的值,并且一个“模式”可以匹配多种值,不同值之间用竖线(|)联结 ;
一个模式要用双分号(;;)作为结束 ;
以逆序的case命令(esac)表示case分支语句的结束
case 条件 in
模式1)
命令1
;;
[模式2)
命令2
;;
...............
模式n)
命令n
;;]
esac
for循环for循环格式
说明:
“列表”为存储了一系列值的列表,随着循环的进行,变量从列表中的第一个值依次取到最后一个值;
do和done之间的命令通常为根据变量进行处理的一系列命令,这些命令每次循环都执行一次;
如果中括号中的部分省略掉,Bash则认为是“in $@”,即执行该程序时通过命令行传给程序的所有参数的列表。 for 变量 [in 列表]
do
命令(通常用到循环变量)
donewhile循环与until循环while循环与until循环格式:说明:
while循环中,只要条件为真,就执行do和done之间的循环命令;
until循环中,只要条件不为真,就执行do和done之间的循环命令,或者说,在until循环中,一直执行do和done之间的循环命令,直到条件为真;
避免生成死循环。
while/until 条件
do
命令
done函数函数格式:
定义:
引用:说明:
中括号中的部分可以省略;
如果在函数内部需要使用传递给函数的参数,一般用$0、$1、......、$n,以及$#、$*、$@这些特殊变量 :
$0为执行脚本的文件名;
$1是传递给函数的第1个参数 ;
$#为传递给函数的参数个数;
$*和$@为传递给函数的所有参数 [function] 函数名()
{
命令
}函数名 [ 参数1 参数2 ...参数n ]函数对变量的访问示例函数对变量的访问示例课后练习课后练习什么是shell程序?
Redhat linux 9有哪些种shell?
什么是shell程序?
比较shell程序和其它程序的异同。
说明shell程序的一般格式。
在Bash中如何声明变量?Bash中变量声明和c/c++程序中变量声明有什么不同?
简述$n(n=0、1、2......),$#,$*,$@特殊变量的含义和用法。
课后练习课后练习Bash中有哪些常用的运算符?
Bash中有哪些常用的控制结构?
在Bash中如何获取并使用传递给函数的参数?
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
文件/etc/bashrc的内容,看看它主要完成哪些功能?
编写一个shell程序,控制可执行文件/usr/local/bin/myserver的启动/停止/重新启动。