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脚本编程(三)相关推荐

  1. Linux shell 脚本编程-实战篇(三)

    继: Linux shell 脚本编程-实战篇(二) 3. 一些小有意思的脚本 3.1 发送消息 3.1.1 功能分析 对于这种简单的脚本,需要的功能不多.涉及的一些命令很常见,下面了解脚本所需的几个 ...

  2. Linux shell脚本编程(二)

    Linux shell脚本编程(二) -------------------------------------------------------------------- 注:如果你对python ...

  3. Linux shell脚本编程(一)

    -------------------------------------------------------------------- 注:如果你对python感兴趣,我这有个学习Python基地, ...

  4. Linux Shell脚本编程基础

    2 Linux Shell脚本编程基础 发表于: Linux, Shell, UNIX, 资源分享 | 作者: 谋万世全局者 标签: Linux,Shell,编程基础,脚本 本文作者:Leal 授权许 ...

  5. Linux shell 脚本编程-实战篇(二)

    继: Linux shell 脚本编程-实战篇(一) 2. 创建与数据库.Web及电子邮件相关的脚本 2.1 MySQL 数据库 2.1.1 MySQL 数据库安装 到 http://repo.mys ...

  6. linux shell 脚本编程基本语法

    linux shell脚本编程基本语法 Shell script是利用shell的功能所写的一个"程序",这个程序是使用纯文本文件,将一些Linux Shell的语法与命令(含外部 ...

  7. LINUX——shell脚本编程

    一.什么是shell脚本编程 shell脚本并不是真正的编程语言,实际上就是命令的集合,类似于windows的批处理文件 二.编写shell脚本(文件格式为.sh) 1.编写一个helowrold+日 ...

  8. linux SHELL脚本编程

    shell脚本编程 shell定义:简单来讲就是命令解析器,将用户输入的指令转换为相应的机器能够运行的程序. shell种类:bourne shell (sh):korn shell(ksh) bou ...

  9. Linux Shell脚本编程入门

    Shell Script Shell 脚本是包含一系列命令的文本本当:读取执行该文本文档就可以执行文档里面的命令: 常用于执行批量事务处理.重复性操作.自动化运维.定时执行任务等 编写一个简单 She ...

最新文章

  1. Hybrid de novo tandem repeat detection using short and long reads 使用短读和长读的混合从头到尾串联重复检测
  2. 获取当前元素在兄弟元素节点中的索引
  3. HDLBits 系列(14) Latch and Dff and Edge detect
  4. matlab zp2,matlab用于控制系统数字仿真
  5. Microsoft .NET:Microsoft .NET之.net4.5.1简介、安装、使用方法之详细攻略
  6. JQuery-学习笔记05【高级——JQuery动画和遍历】
  7. ISAPI_Rewrite规则
  8. 解决Android 启动模拟器是出现“Failed to allocate memory: 8”错误提示
  9. Linux内核实现多路镜像流量聚合和复制
  10. 发布 .NET 5 带运行时单文件应用时优化文件体积的方法
  11. mysql查询重复的名字_Mysql中like用法:查询名字中含有风字的学生信息
  12. Java5泛型的用法,T.class的获取和为擦拭法站台
  13. Protobuf的优点
  14. php 入库乱码,php 中文字符入库或显示乱码问题的解决方法_PHP教程
  15. java中 有return 的情况,return以及try,finally代码块的执行顺序
  16. Opencv step by step - 图像变换
  17. 复杂数组类型的深拷贝
  18. angular4监听输入框_angular4兄弟组件交互,监听响应
  19. h3c使用acl控制ftp访问_H3C交换机典型访问控制列表(ACL)配置实例
  20. 向世界说你好的c语言程序,C语言你好,世界

热门文章

  1. 二级路由dhcp关闭连不上wifi_酒店网络故障:原来还与DHCP服务器有关
  2. findfirstfile函数为什么不能遍历doc_编程之美:IO多路复用——记性不好的poll函数...
  3. 【虚拟化】Dockerfile构建JDK镜像
  4. Lost Numbers
  5. Fiddler抓包使用教程-QuickExec
  6. kmp字符串查询算法
  7. sharding jdbc根据年月分表
  8. SQL注入学习——Bool盲注详解 sqli-labs(Less 8)
  9. Python 去除序列s中的重复元素
  10. C++ int与string类型相互转化