【Shell 编程基础第二部分】Shell里的流程控制\函数及\脚本调试

简介:

对于Shell书写和概念上一篇已经有所介绍,那么本篇继续学习Shell编程一些语法知识;

首先介绍Shell中的流程控制,例如判断语句等等…

if语句:

首先了解几个知识:

[ -f "somefile" ] :判断是否是一个文件

[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限

[ -n "$var" ] :判断$var变量是否有值

[ "$a" = "$b" ] :判断$a和$b是否相等

示例代码:

 

 
 
  1. #!/bin/sh 
  2. varOne=1 
  3. varTwo=2 
  4. varThree=3 
  5. if [ "$varOne" = "$varTwo" ]; then 
  6.     echo "varTwo:$varTwo" 
  7. elif [ "$varOne" = "$varThree" ]; then 
  8.     echo "varThree:$varThree" 
  9. else 
  10.     echo "varOne:$varOne" 
  11. fi 

务必注意,[]比较的时候其括号前后的空格别忘了! = 等号前后也要有空格也要注意;

   && 和 || 操作符:

示例代码:

 

 
 
  1. #!/bin/sh 
  2. varOne=1 
  3. varTwo=2 
  4. varThree=3 
  5. if [ "$varOne" = "$varThree" ] || [ "$varOne" = "$varTwo" ]; then 
  6.     echo "|| 进入" 
  7. else 
  8.     echo "No || 进入" 
  9. fi 
  10.   
  11. if [ "$varOne" = "$varOne" ] && [ "$varOne" = "$varTwo" ]; then 
  12.     echo "&& 进入" 
  13. else 
  14.     echo "No && 进入" 
  15. fi 

case 语句:

须知:

case表达式可以用来匹配一个给定的字符串,而不是数字(可别和C语言里的switch…case混淆)。

    示例代码:

 

 
 
  1. #!/bin/sh 
  2.   
  3. ftype=`file "$1"`   # Note ' and ` is different 
  4. case "$ftype" in 
  5. "$1: Zip archive"*) 
  6. unzip "$1" ;; 
  7. "$1: gzip compressed"*) 
  8. gunzip "$1" ;; 
  9. "$1: bzip2 compressed"*) 
  10. bunzip2 "$1" ;; 
  11. *) echo "File $1 can not be uncompressed with smartzip";; 
  12. esac 

特殊变量$1,该变量包含有传递给该脚本的第一个参数值,也就是说,$1 就是字符串 articles.zip。

     select 语句:

select表达式是bash的一种扩展应用,擅长于交互式场合。用户可以从一组不同的值中进行选择:

 

 
 
  1. select var in ... ; do 
  2.  break
  3. done 
  4. .... now $var can be used .... 
示例代码:

 

 
 
  1. #!/bin/sh 
  2.   
  3. echo "What is your favourite OS?" 
  4. select var in "Linux" "Gnu Hurd" "Free BSD" "Other"do 
  5.   break
  6. done 
  7. echo "You have selected $var" 
如果 以上脚本运行出现 select :NOT FOUND 将 #!/bin/sh 改为 #!/bin/bash 该脚本的运行结果如下:

 

 
 
  1. What is your favourite OS? 
  2. 1) Linux 
  3. 2) Gnu Hurd 
  4. 3) Free BSD 
  5. 4) Other 
  6. #? 1 
  7. You have selected Linux 

while/for 循环:

示例代码:

 

 
 
  1. #!/bin/sh 
  2. varOne=1 
  3. varTwo=1 
  4.   
  5. # while 
  6. while [ "$varOne" = "$varOne" ]; do 
  7.     echo "while Done" 
  8.     break 
  9. done 
  10.   
  11. #  for 
  12. for varStr in H I M I ; do 
  13.     echo "varStr is $varStr" 
  14. done 
输出:

 

 
 
  1. while Done 
  2. varStr is H 
  3. varStr is I 
  4. varStr is M 
  5. varStr is I 
  6. localhost:Desktop Himi$ 

select 语句:

须知:select表达式是bash的一种扩展应用,擅长于交互式场合。用户可以从一组不同的值中进行选择:

   示例代码:

 

 
 
  1. #!/bin/sh 
  2. echo "What is your favourite?" 
  3. select var in "iOS" "Android" "Himi" "Other"do 
  4. break
  5. done 
  6. echo "You have selected $var" 
执行脚本后,等待用户输入,然后在终端输入你的选择,回车,如下显示:

 

 
 
  1. What is your favourite? 
  2. 1) iOS 
  3. 2) Android 
  4. 3) Himi 
  5. 4) Other 
  6. #? 3 
  7. You have selected Himi 
  8. localhost:Desktop Himi$ 

函数:

如果你写过比较复杂的脚本,就会发现可能在几个地方使用了相同的代码,这时如果用上函数,会方便很多。函数的大致样子如下:

 

 
 
  1. functionname() 
  2. # inside the body $1 is the first argument given to the function 
  3. # $2 the second ... 
  4. body 
示例代码:

 

 
 
  1. #!/bin/sh 
  2. himi() 
  3.     echo "Function is ok" 
  4.     exit 0 
  5. himi 

脚本调试:

最简单的调试方法当然是使用echo命令。你可以在任何怀疑出错的地方用echo打印变量值,这也是大部分shell程序员花费80%的时间用于调试的原因。Shell脚本的好处在于无需重新编译,而插入一个echo命令也不需要多少时间。shell也有一个真正的调试模式,如果脚本”strangescript”出错,可以使用如下命令进行调试:

 sh -x strangescript

上述命令会执行该脚本,同时显示所有变量的值。shell还有一个不执行脚本只检查语法的模式,命令如下:

sh -n your_script    

OK,本章主要是为了熟悉一些控制语句和常用知识点,那么到这对于Shell编程基础学习认识就算告一段落,如有必要以后会继续深入学习;暂时足以;





本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/908879,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
存储 Shell Linux
Shell 编程:探索 Shell 的基本概念与用法
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Shell 脚本(shell script),是一种为 shell 编写的脚本程序,shell 和 shell script 是两个不同的概念。
82 0
|
4月前
|
Shell
04.Shell脚本 语法编程 超详细总结
04.Shell脚本 语法编程 超详细总结
32 2
|
10月前
|
Unix Shell Linux
【Shell编程】Shell基本概述与脚本执行方式
【Shell编程】Shell基本概述与脚本执行方式
95 0
|
11月前
|
运维 Shell 应用服务中间件
Shell 编程上
Shell 编程上
|
11月前
|
Shell 应用服务中间件 数据安全/隐私保护
Shell 编程下
Shell 编程下
|
Java Shell
Shell学习(四):流程控制
Shell学习(四):流程控制
Shell学习(四):流程控制
|
监控 Shell 应用服务中间件
Shell 编程(二):Shell 函数的高级用法
Linux Shell 中的函数和大多数编程语言中的函数一样 将相似的任务或代码封装到函数中,供其他地方调用
99 0
|
分布式计算 Hadoop Shell
Shell 编程(一):Shell 变量的高级用法(一)
Shell 编程(一):Shell 变量的高级用法
87 0
|
Unix Shell 应用服务中间件
Shell 编程(一):Shell 变量的高级用法(二)
Shell 编程(一):Shell 变量的高级用法
111 0
|
Java Unix Shell
Shell 脚本的编写总结
这篇文章主要是为了记录一下Shell脚本的使用语法,前几天写了一个shell脚本,其中,也遇到了一些语法不清楚的情况,在此记录一下已备后续使用
201 0
Shell 脚本的编写总结

热门文章

最新文章