第七章 Linux单分支多分支,case语句,for循环,while循环,read获取输入,函数,Linux 的备份和恢复dump,restore
1.Linux单分支多分支:
(1)if判断基本语法:
if [ 条件判断式 ]
then
代码
fi
或者
if [ 条件判断式 ]
then
代码
elif [ 条件判断式 ]
then
代码
fi
注意:[ 条件判断式 ],中括号和条件判断式之间有空格
(2)案例:编写一个shell程序,如果输入的参数大于等于60,则输出“及格了”,如果小于60,则输出“不及格”。
if [ $1 -ge 60 ]
then
echo “及格了”
elif [ $1 -lt 60 ]
then
echo “不及格”
fi
2.case语句:
(1)基本语法:
case $变量名 in
“值1”)
程序1
;;
“值2”)
程序2
;;
*)
程序3
;;
esac
(2)案例:当命令行参数是1时,输出“周一”,是2时,就输出“周二”,其他情况输出“other”。
case $1 in
“1”)
echo “周一’
;;
“2”)
echo “周二”
;;
*)
echo “other”
;;
esac
3.for循环:
(1)基本语法1:
for 变量 in 值1 值2 值3
do
程序/代码
done
(2)案例1:打印命令行输入的参数(这里可以看出$*和$@的区别)
#$*把输入的参数当做一个整体,所以,只会输出一句。
for i in “$*”
do
echo “number is $i”
done
#$@把输入的参数分别对待,有几个参数,就输出几句。
for i in “$@”
do
echo “number is $i”
done
(3)基本语法2:
for ((初始值;循环控制条件;变量变化))
do
程序
done
(4)案例2:从1加到100的值输出显示
SUM=0
for ((i=1;i<=100;i++))
do
SUM=$[ $SUM+$i ]
done
echo “总和为SUM=$SUM”
4.while循环:
(1)基本语法:
while [ 条件判断式 ]
do
程序/代码
done
注意:while 和[之间有空格,条件判断式和[]之间有空格。
(2)案例:从命令行输入一个数n,统计从1+…+n的值是多少。
SUM=0
i=1
while [ $i le $1 ]
do
SUM=$[ $SUM+$i ]
i=$[ $i+1 ]
done
echo “执行结果为=$SUM”
5.read获取输入:
(1)基本语法:read(选项)(参数)
选项:-p:指定读取值时的提示符。
-t:指定读取值时的等待时间(秒),如果没有在指定时间内输入,就不再等待了。
参数:指定读取值的变量名。
(2)应用案例:
案例1:读取控制台输入的一个NUM1值。
read –p “请输入一个数NUM1=” NUM1
echo “你输入的NUM1=$NUM1”
案例2:读取控制台输入的一个NUM2值,在10秒内输入。
read –t 10 –p “请输入一个数NUM2=” NUM2
echo “你输入的NUM2=$NUM2”
6.函数:
(1)系统函数:
(1)basename基本语法:
功能:返回完整路径最后/的部分,用于获取文件名。
basename [pathname] [suffix]
basename [string] [suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个“/”字符,然后将字符串显示出来。)
选项:suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。
(2)案例1:请返回/home/aaa/test.txt的test.txx部分。 basename /home/aaa/test.txt #test.txt
(3)dirname基本语法:
功能:返回完整路径最后/的前面的部分,常用于返回路径部分。
dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的部分(目录的部分))
(4)案例2:请返回/home/aaa/test.txt的/home/aaa 。dirname /home/aaa/test.txt #/home/aaa
(2)自定义函数:
(1)基本语法:
[ function ] funname [()]
{
Action;
[return int;]
}
调用直接写函数名:funname [值]
(2)案例:计算两个参数的和(动态的获取),getSum
function getSum(){
SUM=$[$n1+$n2]
echo “和是=$SUM”
}
read –p “请输入一个数n1=” n1
read –p “请输入一个数n2=” n2
getSum $n1 $n2
7.Linux 的备份和恢复有两种方式:
(1)把需要的文件(或者分区)用tar打包,下次需要恢复的时候,再解压开覆盖即可。
(2)使用dump和restore命令。
8.使用dump完成备份:
(1)基本介绍:dump支持分卷和增量备份(所谓增量备份是指备份上次备份后修改/增加过的文件,也称为差异备份)。
(2)dump语法说明:
dump [-cu] [-123456789] [-f <备份后文件名>] [-T<日期>] [目录或文件系统]
dump [] –wW
-c:创建新的归档文件,并将由一个或多个文件参数所指定的内容写入归档文件的开头。
-0123456789:备份的层级。0为最完整备份,会备份所有的文件。若指定0以上的层级,则备份至上一次备份以来修改或新增的文件,
到9以后,可以再次轮替。
-f<备份后文件名>:指定备份后文件名。
-j:调用bzlib库压缩备份文件,也就是将备份后的文件压缩成bz2格式,让文件更小。
-T<日期>:指定开始备份的时间与日期。
-u:备份完毕后,在/etc/dumpdares中记录备份的文件系统,层级,日期与时间等。
-t:指定文件名,若该文件已存在备份文件中,则列出名称。
-W:显示需要备份的文件及其最后一次备份的层级,日期,时间。
-w:与-W相似,但仅显示需要备份的文件。
9.restore完成恢复:
(1)基本介绍:restore命令用来恢复已备份的文件,可以从dump生成的备份文件中恢复原文件。
(2)基本语法:
restore [模式选项] [选项]
以下四个模式,不能混用,在一次命令中,只能指定一种。
-C:使用对比模式,将备份的文件与已存在的文件相互对比。
-i:使用交互模式,在进行还原操作时,restore命令将依序询问用户。
-r:进行还原模式。(常用)
-t:查看模式,看备份文件有哪些文件。
选项:
-f<备份设备>:从指定的文件中读取备份数据,进行还原操作。