第13章 学习shell scripts

1. 什么是shell scripts

使用纯文本文件,将shell 的语法和指令(含外部指令)写入文本,搭配正规表示法,管线命令,数据流重导向等功能,并提供数组,条件,判断,循环等重要功能,让用户以shell 来编写程序,达到特定的功能。
1.1 干嘛学习shell scripts
自动化管理的重要依据。
管理系统的工作,如service的启动等使用shell scripts
简单入侵检测功能。
1.2 第一支script的撰写与执行
档案的撰写注意事项:
1. 档案从左到右,从上到下执行。
2. 档案遇到[Enter]就执行。
3. 档案忽略多个空格。
4.  # 作为批注。
档案执行注意:
以下两种方式的执行都是新建了bash来执行。
1. 档案直接执行,要求档案具有可读,可执行权限。
2. 以bash程序来执行,如 bash *.sh  sh *.sh 
source 脚本 :在父环境中执行。
script的模板。
#!/bin/bash
#program:
#程序功能描述
#history
#作者 时间 描述
script 正文
exit 0

2. 简单的shell scripts练习

对谈式脚本,用户输入变量内容
read -p "please input you val" val
数值运算
$((运算内容))

3. 善用判断式

3.1 利用test指令的测试功能
如测试目录是否存在:test -e /demo && echo "exit" || echo "not exit"
测试标志代表的意义
1.关于档名判断:
-e :该档案是否存在
-f :该档名是否存在且为档案
-d:该目录是否存在且为目录
-b:是否存在且为一个block device装置
-c: 是否存在且为一个character device装置
-S:是否存在且为一个socket装置
-L:是否存在且为一个连接档
2. 关于档案权限侦测
-r:是否存在且可读
-w:是否存在且可写
-x:是否存在且可执行
-u:是否存在且具有SUID属性
-g:是否存在且具有SGID属性。
-k:是否存在且具有Stick bit属性
-s:是否存在且为非空白档
3. 两个档案之间的比较 如 test file1 -nt  file2
-nt: 判断file1是否比file2新
-ot:判断file1是否比file2旧
-ef:判断file1与file2是否为同一档案。
4. 关于两个整数之间的判定如两个数字是否相等: test n1 -eq n2
-eq:两个数字是否相等。
-ne:两数字不相等。
-gt:判断n1比n2大
-lt:判断n1比n2小
-ge:n1大于等于n2
-le:n1小于等于n2
5. 判断字符串
test -z string :判断字符串是否为空,为空返回true
test -n string :判断字符串是否空,为空返回false,注意:-n可不写。
test str1=str2:判断两个字符串是否相等。
6 多重判断如:test -r file -a -x file
-a :同时成立
-o:任何一个成立
!: 反向状态
3.2 利用判断符号[]
中括号中每个组件需要空格分隔
变数使用双引号括起来
3.3 shell scripts的默认变数:$0,$1
脚本档名为$0;
$#:参数个数。
$@: 所有参数显示出来。

4. 条件判断式

4.1 利用if .. then
单层简单判断式
if [ 条件判断式 ]; then
执行语句
fi
多重复杂条件判断式
if [ 条件判断式 ]; then
判断成功执行的语句
elif [ 条件判断式 ]; then
判断成功执行的语句
else
前面判断都不成功执行的语句
fi
4.2 利用case ... esac判断
case $变量名称 in
"第一个变量内容")
程序段;;
"第二个变量内容")
程序段;;
esac
注意: 每个程序段结尾需要两个分号
4.3 利用function功能
function fname(){
程序段
}
注意:fname 为执行指令名称
需要放在执行指令前面定义。

5. 循环 loop

5.1 不定循环
当判断式成立时执行
while [ 判断式 ]
do
 程序段
done 

当判断式成立时终止循环
until [ 判断式 ]
do
 程序段
done 
5.2 固定循环
用于确定执行次数的循环
for var in var1 var2 var3...
do
 程序段,var为var1 ,var2,var3...
done

for ( ( 初始值; 限制值; 执行步阶 ) ) 
do 
  程序段;
done

6. shell scripts的追踪与debug

sh [ -nvx ] 脚本.sh
-n:不执行脚本仅判断语法
-v: 执行前将脚本输出到屏幕。
-x: 将执行到的脚本输出到屏幕



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值