Linux shell脚本编程(二)

--------------------------------------------------------------------
注:如果你对python感兴趣,我这有个学习Python基地,里面有很多学习资料,感兴趣的+Q群:895817687
--------------------------------------------------------------------
1  练习:求100以内所有偶数之和;2 使用至少三种方法实现;3 4 示例1:5 6 #!/bin/bash7 #8 declare -i sum=0        #声明一个变量求和,初始值为09 10 for i in $(seq 0 2 100); do11     sum=$(($sum+$i))12 done13 14 echo "Even sum: $sum."15 16 示例2:17 18 #!/bin/bash19 #20 declare -i sum=021 22 for i in {1..100}; do23     if [ $[$i%2] -eq 0 ]; then24        sum=$[$sum+$i]25     fi26 done27 28 echo "Even sum: $sum."29 30 增强型赋值:31   +=32     sum=$[$sum+$i]33     let sum+=$i34   -=,*=,/=,%=,35 36     let count=$[$conunt+1] -->let count+=1-->let count++37     let count=$[$conunt-1] -->let count-=1-->let count--38 39 40 示例:显示/etc目录下所有的每个普通文件,而后统计一共有多少个这样的文件;41 42 #!/bin/bash43 #44 declare -i count=045 46 for file in /etc/*; do47     if [ -f $file ]; then48          let count++49          echo "$count $file"50     fi51 done52 53 echo "Total: $count files."54 55 56 测试表达式:57     整数测试;-gt,-lt,-ge,-le,-eq,-ne58     字符串测试:==,>,<,!=,-z,-n,=~59 60     注意:61     (1)字符串等会比较测试[ "$hostname" == 'localhost' ]62    (2)模式匹配测试:[[ "STRING" -~ PATTERN ]]63 64      示例:写一个脚本实现如下功能;65        获取当前主机的主机名:66            如果当前主机的主机名为空,或者为localhost,则将其修改为www.mageedu.com67 68     组合测试条件:69         条件间逻辑运算:70             与:多个条件要同时满足;71             或:多个条件满足其一即可;72             非:对指定的条件取反;73 74         表达式组合:75             与:[[ CONDITION -a CONDITION2 ]]76             或:[[ CONDITION -o CONDITION2 ]]77             非:[ !CONDITION ]78 79         命令组合:80             与:COMMAND1 && COMMAND2 <-- [ EXPR1 ] && [ EXPR2 ]81             或:COMMAND1 || COMMAND282             非:!COMMAND83 84             false && true = false85             false && false = false86 87             true && false = true88             true && true = true89 90             if COMMAND; then91                COMMAND292             fi93          短路操作符:94             true || true = true95             true || false = true96 97             false || true = true98             false || false = false99
100           if ! COMMAND1; then
101               COMMAND2
102           fi
103
104           COMMAND1 && COMMAND2 || COMMAND3
105               if COMMAND1;then
106                    COMMAND2
107               else
108                    COMMAND3
109               fi
110
111     获取当前主机的主机名:
112            如果当前主机的主机名为空,或者为localhost,则将其修改为www.mageedu.com
113
114 #!/bin/bash
115 #
116 hostname=$(hostname)
117
118 if [ -z "$hostname" -o "$hostname"=="localhost" ]; then
119    hostname www.magedu.com
120 fi
121
122 练习:写一个脚本
123 (1)传递两个文本文件路径给脚本;
124 (2)显示两个文件中空白行数较多的文件及其空白行的个数;
125 (3)显示两个文件中总行数较多的文件及其总行数;
126 练习:写一个脚本
127 (1)提示用户输入一个字符串;
128 (2)判断:
129      如果输入的是quit,则退出脚本;
130      否则,则显示其输入的字符串内容;
131
132  练习:写一个脚本,打印九九乘法表:
133     循环嵌套
134
135 #!/bin/bash
136 #
137 for j in {1..9}; do
138    for i in $(seq 1 $j); do
139       echo -n -e "${i}X${j}=$[$i*$j]\t"
140    done
141    echo
142 done
143
144 多分支的if语句:
145      单分支:
146          if CONDITION; then
147              if-true-分支
148          fi
149      双分支:
150          if CONDITION; then
151              if-true-分支
152          else
153              if-false-分支
154          fi
155
156     多分支:
157          if CONDITION1; then
158             if -CONDITION-true-分支
159         elif CONDITION2; then
160             if-CONDITION2-true-分支
161         ...
162         else
163             if-ALL-false-分支
164         fi
165
166  示例:通过脚本参数传递一个文件路径给脚本,判断其类型:
167
168  #!/bin/bash
169 #
170 if [ $# -lt 1 ]; then
171    echo "Usage: $0 <path>"
172    exit 1
173 fi
174
175 if [ -f $1 ]; then
176    echo "Rgulat file."
177 elif [ -d $1 ]; then
178    echo "Directory."
179 elif [ -h $1 ]; then
180    echo "Symbolic link."
181 elif [ -b $1 ]; then
182    echo "Block special."
183 elif [ -c $1 ]; then
184    echo "Charactoer special."
185 elif [ -S $1 ]; then
186    echo "Socket file."
187 else
188    echo "file not exist or unknow type."
189 fi
190
191 示例:脚本可接受四个参数
192    start:创建文件/var/lock/subsys/SCRIPT_NAME
193    stop:删除此文件
194    restatr:删除此文件并重新创建
195    status:如果文件存在,显示为“running”;否则,显示为“stopped”
196
197    basename命令:
198       取得路径的基名:
199 示例:
200
201 #!/bin/bash
202 #
203 prog=$(basename $0)
204 lockfile="/var/lock/subsys/$prog"
205 #echo $lockfile
206
207 if [ $# -lt 1 ]; then
208    echo "Usage: $prog start|stop|restart|status"
209    exit 1
210 fi
211
212 if [ "$1" == "start" ]; then
213     if [ -f $lockfile ]; then
214         echo "$prog is started yes."
215     else
216        touch $lockfile && echo "Starting $prog ok..." || echo "Starting $prog failed.."
217     fi
218 elif [ "$1" == "stop" ]; then
219     if [ -f $lockfile ]; then
220         rm -f $lockfile && echo "Stop $prog ok..." || echo "Stop $prog failed.."
221     else
222         echo "$prog is stopped yet."
223     fi
224 elif [ "$1" == "restart" ]; then
225     if [ -f $lockfile ]; then
226         rm -f $lockfile && touch $lockfile && echo "Restart $prog ok..."
227     else
228         touch $lockfile && echo "$prog is stopped, Starting $prog ok..."
229     fi
230 elif [ "$1" == "status" ]; then
231     if [ -f $lockfile ]; then
232         echo "Running..."
233     else
234         echo "Stopped..."
235     fi
236 else
237     echo "Usage: $prog start|stop|restart|status"
238     exit 1
239 fi
240
241 case语句:
242     简洁版多分支if语句:
243     使用场景:判断某变量的值是否为多种情形中的一种时使用;
244
245     语法:
246         case $VARIABLE in
247         PATTERN1)
248              分支1
249              ;;
250         PATTERN2)
251              分支2
252              ;;
253         PATTERN3
254              分支3
255              ;;
256         ...
257         *)
258              分支n
259              ;;
260         esac
261
262         PATTERN可使用glob模式的通配符:
263            *:任意长度的任意字符;
264            ?:任意单个字符;
265            []:指定范围内的任意单个字符;
266            a|b:多选1;
267
268 示例:提示键入任意一个字符,判断类型:
269 脚本如下:
270 #!/bin/bash
271 #
272 read -p "Plz enter a character: " char
273
274 case $char in
275 [a-z])
276      echo "A character."
277      ;;
278 [0-9])
279      echo "A digit."
280      ;;
281 *)
282      echo "A special character."
283      ;;
284 esac
285
286 示例:脚本可接受四个参数
287    start:创建文件/var/lock/subsys/SCRIPT_NAME
288    stop:删除此文件
289    restatr:删除此文件并重新创建
290    status:如果文件存在,显示为“running”;否则,显示为“stopped”
291
292    脚本如下:
293
294    #!/bin/bash
295 #
296 prog=$(basename $0)
297 lockfile="/var/lock/subsys/$prog"
298 #echo $lockfile
299
300 if [ $# -lt 1 ]; then
301    echo "Usage: $prog start|stop|restart|status"
302    exit 1
303 fi
304 case $1 in
305 start)
306     if [ -f $lockfile ]; then
307         echo "$prog is started yes."
308     else
309        touch $lockfile && echo "Starting $prog ok..." || echo "Starting $prog failed.."
310     fi
311     ;;
312 stop)
313     if [ -f $lockfile ]; then
314         rm -f $lockfile && echo "Stop $prog ok..." || echo "Stop $prog failed.."
315     else
316         echo "$prog is stopped yet."
317     fi
318     ;;
319 restart)
320     if [ -f $lockfile ]; then
321         rm -f $lockfile && touch $lockfile && echo "Restart $prog ok..."
322     else
323         touch $lockfile && echo "$prog is stopped, Starting $prog ok..."
324     fi
325     ;;
326 status)
327     if [ -f $lockfile ]; then
328         echo "Running..."
329     else
330         echo "Stopped..."
331     fi
332     ;;
333 *)
334     echo "Usage: $prog start|stop|restart|status"
335     exit 1
336 esac

Linux shell脚本编程(二)相关推荐

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

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

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

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

  3. Linux shell脚本编程(三)

    Linux shell脚本编程 -------------------------------------------------------------------- 注:如果你对python感兴趣 ...

  4. Linux shell脚本编程(一)

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

  5. Linux Shell脚本编程基础

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

  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脚本编程学习笔记和实战

    http://www.1987.name/141.html shell基础 终端打印.算术运算.经常使用变量 Linux下搜索指定文件夹下特定字符串并高亮显示匹配关键词 从键盘或文件里获取标准输入 [ ...

最新文章

  1. 中国人工智能源头创新的突破点在哪里?创投圈这么看
  2. 商务网站开发这些优势值得青睐
  3. VIM自动补全插件:deoplete
  4. pat天梯赛L1-054. 福到了
  5. 如何构建一个分布式爬虫:基础篇
  6. Day11多态部分-3
  7. 使用post访问不到接口_Postman工具使用说明
  8. OpenJudge计算概论-找出第k大的数
  9. VisualSVN服务器的本地搭建和使用
  10. 剑指offer之旋转数组的最小数字
  11. stepmania谱面下载、安装、转谱,音游相关 osu etterna
  12. Xpose框架的入门学习
  13. Symbian手记【一】 —— Symbian命名法
  14. sparc处理器开发工具_SPARC高性能处理器集成开发环境及其编译器设计与实现
  15. 如何查找某个物种的基因组大小
  16. css tabindex
  17. jQuery日期插件
  18. 常用服务器软件的简单介绍
  19. 伍德里奇计量经济学导论之计算机操作题的R语言实现(一些重要专题)
  20. 善用快捷键,玩转windows10便签程序

热门文章

  1. visual studio code python插件下载_visual studio code 的必装推荐插件plugin, vscode, vsc
  2. java oci_java oracle oci方式连接
  3. java实现接收字符串对象并在后台代码中转成list对象
  4. ajax中return不生效
  5. 《移动项目实践》实验报告——Android Studio环境搭建
  6. Applese 走方格
  7. jointable 能加多个字段吗_Excel函数Countif、Countifs超级实用技巧,你真的都掌握吗?...
  8. Android中CardView的简单使用
  9. 多线程编程1 - NSThread
  10. 地图按照自己规定路线进行移动