【Shell】算术运算符、流程控制、函数使用、数组以及加载其它文件的变量
文章目录
1.6 Shell算术运算符
1 简介
 Shell 
 和其他编程一样,
 支持
 包括:算术、关系、布尔、字符串等运算符。 
 
 原生
  bash 
 不支持 
 简单的数学运算,但是可以通过其他命令来实现,例如
 expr
 。 
 
 expr 
 是一款表达式计算工具,使用它能完成表达式的求值操作。 
 
 例如,两个数相加: 
 
 
 注意: 
 
 表达式和运算符之间要有空格
 ,例如
  2+2 
 是不对的,必须写成
  2 + 2
 。 
 
 完整的表达式要被 
 ` 
 包含,注意不是单引号,在
  Esc 
 键下边。 
 
 下表列出了常用的算术运算符,假定变量
  a 
 为
  10
 ,变量
  b 
 为 20: 
 ![]() 
 
 
 注意:
 条件表达式要放在方括号之间,并且要有空格,例如
 : 
 [$a==$b] 
 是错误的,必须写成 
 [ $a == $b 
 
 ]
 。 
 
2 例子


1.7流程控制
1 if else
 1.1 if 
 
 if 
 语句语法格式:
 
 
demo
 
 
 末尾的
 fifi
 就是
 if
 倒过来拼写,后面还会遇到类似的。 
 
 1.2 if else 
 
 if else 
 语法格式: 
 
 
 1.3 if else-if else 
 
 if else-if else 
 语法格式: 
 
 
以下实例判断两个变量是否相等:
关系运算符
 关系运算符只支持数字,不支持字符串,除非字符串的值是数字。 
 
 下表列出了常用的关系运算符,假定变量
  a 
 为
  10
 ,变量
  b 
 为
  20
 :
 
 
案例:
 
 
2 for 循环
2.1 格式

2.2 随堂练习
 
 
代码如下:


3 while 语句
   while
   循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式 
  
 
  
   为: 
  
 
   
   
  需求: 计算 1~100 的和
 运行脚本,输出:
 运行脚本,输出: 

   使用中使用了
    Bash let 
   命令,它用于执行一个或多个表达式,变量计算中不需要加上
    $ 
   来表示变量, 
  
 
  
   具体可查阅:
   Bash let 
   命令
   。 
  
 
  4 无限循环
无限循环语法格式:

 

5 case(switch)
     Shell case
     语句为多选择语句。可以用
     case
     语句匹配一个值与一个模式,如果匹配成功,执行相匹配的 
    
 
    
     命令。
     case
     语句格式如下: 
    
 
     
    
     case
     工作方式如上所示。取值后面必须为单词
     in
     ,每一模式必须以右括号结束。取值可以为变量或常 
    
 
    
     数。匹配发现取值符合某一模式后,其间所有命令开始执行直至
      ;;
     。 
    
 
    
     取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果 
    
 
    
     无一匹配模式,使用星号
      * 
     捕获该值,再执行后面的命令。 
    
 
    
     下面的脚本提示输入
     1
     到
     4
     ,与每一种模式进行匹配: 
    
 
     
    输入不同的内容,会有不同的结果,例如:

6 跳出循环
      在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,
      Shell
      使用两个命令来实现该功能: 
     
 
     
      break
      和
      continue
      。 
     
 
     
       6.1 break
       命令 
      
 
      
       break
       命令允许跳出所有循环(终止执行后面的所有循环)。
      
 
       
       
       6.2 continue 
      
 
      
       continue
       命令与
       break
       命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。
      
 
       
      
1.8 函数使用
1 函数的快速入门
格式

 可以带
 function fun() 
 定义,也可以直接
 fun() 
 定义
 ,
 不带任何参数。 
 
 参数返回,可以显示加:
 return 
 返回,如果不加,将以最后一条命令运行结果,作为返回 
 
 值。
  return
 后跟数值
 n(0-255) 
 
 快速入门 
 
 
2 传递参数给函数
 在
 Shell
 中,调用函数时可以向其传递参数。在函数体内部,通过 
 的 形 式 来 获 取 参 数 的 值 , 例 如 , 
 1
 表示 
 
 第一个参数,
 $2
 表示第二个参数
 ... 
 
 带参数的函数示例: 
 ![]() 
 
 
输出结果:
 
 
 注意, 
 不 能 获 取 第 十 个 参 数 , 获 取 第 十 个 参 数 需 要 
 {10}
 。当
 n>=10
 时,需要使用
 ${n}
 来获取参数。 
 
 另外,还有几个特殊字符用来处理参数:
 
 
        
1.9 数组
1 定义数组
 数组中可以存放多个值。
 Bash Shell 
 只支持一维数组
 (不支持多维数组),初始化时不需要定义数组大 
 
 小(。 
 
 与大部分编程语言类似,数组元素的下标由
 0
 开始。 
 
 Shell 
 数组用括号来表示,元素用
 "
 空格
 "
 符号分割开,语法格式如下: 
 
 array_name=(value1 value2 value3 ... valuen)
 
 1.1 
 实例 
 
 
 
读取数组元素值的一般格式是:
2.1 实例

执行脚本,输出结果如下所示:

 2.2 
 获取数组中的所有元素 
 
 使用
 @ 
 或
  * 
 可以获取数组中的所有元素,例如:
 
 
执行脚本,输出结果如下所示:
 
 
 2.3 
 获取数组的长度 
 
 获取数组长度的方法与获取字符串长度的方法相同,例如: 
 
 
执行脚本,输出结果如下所示:

3 遍历数组
3.1 方式一

3.2 方式二

1.10 加载其它文件的变量

1 简介
  和其他语言一样,
  Shell 
  也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的 
 
 
 
  文件。 
 
 
 
  Shell 文件包含的语法格式如下:
  ![]() 
 
 
  
 
2 练习
  定义两个文件
   test1.sh
  和
  test2.sh
  ,在
  test1
  中定义一个变量
  arr=(java c++ shell),
  在
  test2
  中对
  arr
  进行循 
 
 
 
  环打印输出。 
 
 
 
  第一步: vim test1.sh 
  ![]() 
 
 
  
 第二步: vim test2.sh
 
 
第三步: 执行 test2.sh
 
 
  好处
   : 
 
 
 
  1. 
  数据源 和 业务处理 分离 
 
 
 
  2. 
  复用 代码扩展性更强
 
 
 
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号