Linux shell脚本编程(三)
Linux shell脚本编程
--------------------------------------------------------------------
注:如果你对python感兴趣,我这有个学习Python基地,里面有很多学习资料,感兴趣的+Q群:895817687
--------------------------------------------------------------------
1 流程控制:2 循环语句:for,while,until3 4 while循环:5 6 while CONDITION; do7 循环体8 done9 10 进入条件:当CONDITION为“真”;11 退出条件:当CONDITION为“假”;12 13 while CONDITION; do14 循环体15 控制变量的修正表达式16 done17 18 示例:求100以内所有正整数之和;19 #!/bin/bash20 #21 declare -i sum=022 declare -i i=123 24 while [ $i -le 100 ]; do25 let sum+=$i26 let i++27 done28 29 echo "Sum: $sum."30 31 练习:分别求100以内所有奇数之和,及所有偶数之和;32 33 示例:打印九九乘法表;34 #!/bin/bash35 #36 declare -i i=137 declare -i j=138 39 while [ $j -le 9 ]; do40 while [ $i -le $j ]; do41 echo -e -n "${i}X${j}=$[$i*$j]\t"42 let i++43 done44 echo45 let i=146 let j++47 done48 49 until循环:50 until CONDITION; do51 循环体52 循环控制变量的修正表达式53 done54 55 进入条件:当CONDITION为“假”时56 退出条件:当CONDITION为“真”时57 58 示例:求100以内正整数之和;59 #!/bin/bash60 #61 declare -i sum=062 declare -i i=163 64 until [ $i -gt 100 ]; do65 let sum+=$i66 let i++67 done68 69 echo "Sum:$sum."70 练习1:分别求100以内所有偶数之和,以及所有奇数之和;71 练习2:实现九九乘法表;72 练习3:分别使用while和until循环实现添加10个用户:user-user10;73 74 循环控制:75 continue:提前结束本轮循环,而直接进入下一轮;76 break [n]:提前结束循环;77 78 while CONDTION;do79 .......80 if CONDITION; then81 break [n]82 fi83 done84 85 while CONDTION;do86 .......87 if CONDTION2; then88 continue [n]89 fi90 .......91 92 示例:求100以内所有偶数之和;93 #!/bin/bash94 #95 declare -i sum=096 declare -i i=097 98 while [ $i -le 100 ]; do99 let i++
100 if [ $[$i%2] -eq 1 ]; then
101 echo "$i is a odd."
102 continue
103 fi
104 let sum+=$i
105 done
106
107 echo "Sum:$sum."
108
109 死循环:
110 while true; do
111 循环体
112 if CONDITION; then
113 break
114 fi
115 done
116
117 until false; do
118 循环体
119 if CONDITION; then
120 break
121 fi
122 done
123
124 示例;每隔3秒钟查看当前系统是否有名为'gentoo'的用户登录;
125 如果其次查看gentoo登录了,则显示gentoo已经登录;
126 如果未登录,就显示仍然未开始,并显示这是已经是第多少次查看了;
127
128 #!/bin/bash
129 #
130 username=$1
131 declare -i count=0
132
133 while true; do
134 if who | grep "^$username" &> /dev/null; then
135 echo "$username is logged."
136 break
137 else
138 let count++
139 echo "$count $username is not login."
140 fi
141 sleep 3
142 done
143
144 示例:2
145
146 #!/bin/bash
147 #
148 declare -i count=0
149 username=$1
150
151 if [ $# -lt 1 ]; then
152 echo "At lease one argument."
153 exit 1
154 fi
155
156 if ! id $username &> /dev/null; then
157 echo "No such user."
158 exit 2
159 fi
160
161 until who | grep "^$username" &> /dev/null; do
162 let count++
163 echo "$count $username is not login."
164 sleep 3
165 done
166 echo "$username is logged on."
167
168
169 while循环的特殊用法:
170 遍历文件的每一行:
171 while read VARIABLE; do
172 循环体
173 done < /PATH/FROM/SOME_FILE
174
175 示例:找出UID为偶数的所有用户显示其用户名和ID号;
176 #!/bin/bash
177 #
178 while read line; do
179 userid=$(echo $line | cut -d: -f3)
180 if [ $[$userid%2] -eq 0 ]; then
181 echo $line | cut -d: -f1,3
182 fi
183 done < /etc/passwd
184
185
186 for循环的特殊用法:
187 for((expr1;expr2;expr3)); do
188 循环体
189 done
190
191 expr1:定义控制变量,并初始赋值;
192 expr2:循环控制条件;
193 进入条件:控制条件为“真”
194 退出条件:控制条件为“假”
195
196 expr3:修正控制变量
197
198 示例:求100以内所有正整数之和;
199
200 练习1:打印九九乘法表:
201 练习2:传递一个文本文件为参数给脚本,取出此文件的所有的偶数行给予显示,行前要显示行号;
202
203 函数:
204 function:功能
205 把一段具有独立功能代码封装在一起,并给予命名;后续用到时,可直接通过给定函数名来调用整体代码;
206
207 函数作用:
208 代码重用:
209 模块化编程:
210
211 函数的使用方法:
212 先定义:编写函数代码
213 后调用:给出函数名,还可以按需传递参数;
214
215 定义方法:
216 (1)function f_name {217 函数体
218 }
219 (2)f_name() {220 函数体
221 }
222
223 调用函数:
224 f_name [argu1,argu2,...]
225
226 自定义函数状态返回值:
227 return [#]
228 0:成功
229 1-255:失败
230 注意:函数代码执行时,一旦遇到return,函数代码终止运行,函数返回;
231 示例:此前的服务脚本
232
233 #!/bin/bash
234 #
235 prog=$(basename $0)
236 lockfile="/var/lock/subsys/$prog"
237 #echo $lockfile
238
239 if [ $# -lt 1 ]; then
240 echo "Usage: $prog start|stop|restart|status"
241 exit 1
242 fi
243
244 start() {245 if [ -f $lockfile ]; then
246 echo "$prog is started yes."
247 else
248 touch $lockfile && echo "Starting $prog ok..." || echo "Starting $prog failed.."
249 fi
250 }
251 stop() {252 if [ -f $lockfile ]; then
253 rm -f $lockfile && echo "Stop $prog ok..." || echo "Stop $prog failed.."
254 else
255 echo "$prog is stopped yet."
256 fi
257 }
258 restart() {259 if [ -f $lockfile ]; then
260 rm -f $lockfile && touch $lockfile && echo "Restart $prog ok..."
261 else
262 touch $lockfile && echo "$prog is stopped, Starting $prog ok..."
263 fi
264 }
265 status() {266 if [ -f $lockfile ]; then
267 echo "Running..."
268 else
269 echo "Stopped..."
270 fi
271 }
272
273 case $1 in
274 start)
275 start
276 ;;
277 stop)
278 stop
279 ;;
280 restart)
281 restart
282 ;;
283 status)
284 status
285 ;;
286
287 *)
288 echo "Usage: $prog start|stop|restart|status"
289 exit 1
290 esac
291 示例:判断用户ID号的奇偶性
292
293 #!/bin/bash
294 #
295 evenid() {296 if [ $# -lt 1 ]; then
297 return 1
298 fi
299
300 if ! id $1 &> /dev/null; then
301 return 2
302 fi
303
304 userid=$(id -u $1)
305 if [ $[$userid%2] -eq 0 ]; then
306 echo "$1,Even user ID."
307 else
308 echo "$1,Odd user ID."
309 fi
310 }
311
312 evenid root
313
314 evenid
315 echo $?
316
317 evenid rooooooot
318 echo $?
319
320 模块化编程
321 示例:
322 架设/root/bin/srv目录有两个文件:
323 (1)函数文件
324 (2)脚本文件
325
326 为脚本使用配置文件
327 一个文件中只定义变量
328 脚本文件source此变量定义的文件
329
330 变量的作用域:
331 局部变量:
332 local VARIABLE=value
333
334 存活时间:
335 函数执行开始,至函数返回结束;
Linux shell脚本编程(三)相关推荐
- Linux shell 脚本编程-实战篇(三)
继: Linux shell 脚本编程-实战篇(二) 3. 一些小有意思的脚本 3.1 发送消息 3.1.1 功能分析 对于这种简单的脚本,需要的功能不多.涉及的一些命令很常见,下面了解脚本所需的几个 ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) -------------------------------------------------------------------- 注:如果你对python ...
- Linux shell脚本编程(一)
-------------------------------------------------------------------- 注:如果你对python感兴趣,我这有个学习Python基地, ...
- Linux Shell脚本编程基础
2 Linux Shell脚本编程基础 发表于: Linux, Shell, UNIX, 资源分享 | 作者: 谋万世全局者 标签: Linux,Shell,编程基础,脚本 本文作者:Leal 授权许 ...
- Linux shell 脚本编程-实战篇(二)
继: Linux shell 脚本编程-实战篇(一) 2. 创建与数据库.Web及电子邮件相关的脚本 2.1 MySQL 数据库 2.1.1 MySQL 数据库安装 到 http://repo.mys ...
- linux shell 脚本编程基本语法
linux shell脚本编程基本语法 Shell script是利用shell的功能所写的一个"程序",这个程序是使用纯文本文件,将一些Linux Shell的语法与命令(含外部 ...
- LINUX——shell脚本编程
一.什么是shell脚本编程 shell脚本并不是真正的编程语言,实际上就是命令的集合,类似于windows的批处理文件 二.编写shell脚本(文件格式为.sh) 1.编写一个helowrold+日 ...
- linux SHELL脚本编程
shell脚本编程 shell定义:简单来讲就是命令解析器,将用户输入的指令转换为相应的机器能够运行的程序. shell种类:bourne shell (sh):korn shell(ksh) bou ...
- Linux Shell脚本编程入门
Shell Script Shell 脚本是包含一系列命令的文本本当:读取执行该文本文档就可以执行文档里面的命令: 常用于执行批量事务处理.重复性操作.自动化运维.定时执行任务等 编写一个简单 She ...
最新文章
- Hybrid de novo tandem repeat detection using short and long reads 使用短读和长读的混合从头到尾串联重复检测
- 获取当前元素在兄弟元素节点中的索引
- HDLBits 系列(14) Latch and Dff and Edge detect
- matlab zp2,matlab用于控制系统数字仿真
- Microsoft .NET:Microsoft .NET之.net4.5.1简介、安装、使用方法之详细攻略
- JQuery-学习笔记05【高级——JQuery动画和遍历】
- ISAPI_Rewrite规则
- 解决Android 启动模拟器是出现“Failed to allocate memory: 8”错误提示
- Linux内核实现多路镜像流量聚合和复制
- 发布 .NET 5 带运行时单文件应用时优化文件体积的方法
- mysql查询重复的名字_Mysql中like用法:查询名字中含有风字的学生信息
- Java5泛型的用法,T.class的获取和为擦拭法站台
- Protobuf的优点
- php 入库乱码,php 中文字符入库或显示乱码问题的解决方法_PHP教程
- java中 有return 的情况,return以及try,finally代码块的执行顺序
- Opencv step by step - 图像变换
- 复杂数组类型的深拷贝
- angular4监听输入框_angular4兄弟组件交互,监听响应
- h3c使用acl控制ftp访问_H3C交换机典型访问控制列表(ACL)配置实例
- 向世界说你好的c语言程序,C语言你好,世界
热门文章
- 二级路由dhcp关闭连不上wifi_酒店网络故障:原来还与DHCP服务器有关
- findfirstfile函数为什么不能遍历doc_编程之美:IO多路复用——记性不好的poll函数...
- 【虚拟化】Dockerfile构建JDK镜像
- Lost Numbers
- Fiddler抓包使用教程-QuickExec
- kmp字符串查询算法
- sharding jdbc根据年月分表
- SQL注入学习——Bool盲注详解 sqli-labs(Less 8)
- Python 去除序列s中的重复元素
- C++ int与string类型相互转化