Shell基本运算方式

  1. 案例1:Shell中的数值运算
  2. 案例2:条件测试操作
  3. 案例3:使用if选择结构

1 案例1:Shell中的数值运算

1.1 问题

本案例要求熟悉Linux Shell环境的特点,主要练习以下操作:

  • 使用expr、$[ ]、let等整数运算工具:定义变量X=1234,然后计算X与78的四则运算及求模结果
  • 使用bc实现小数运算操作:以交互方式计算12.34与56.78的四则运算结果,另外再以非交互方式重复上述计算,最多显示4位小数

1.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:整数运算工具

1)使用expr命令

乘法操作应采用 \* 转义,避免被作为Shell通配符;参与运算的整数值与运算操作符之间需要以空格分开,引用变量时必须加$符号。

首先定义变量X=1234,然后分别计算与78的加减乘除和求模运算结果:

  1. [root@svr5 ~]# X=1234                             //定义变量X
  2. [root@svr5 ~]# expr $X + 78                     //加法
  3. 1312
  4. [root@svr5 ~]# expr $X - 78                     //减法
  5. 1156
  6. [root@svr5 ~]# expr $X \* 78                     //乘法,操作符应添加\转义
  7. 96252
  8. [root@svr5 ~]# expr $X / 78                     //除法,仅保留整除结果
  9. 15
  10. [root@svr5 ~]# expr $X % 78                     //求模
  11. 64

2)使用$[]或$(())表达式

乘法操作*无需转义,运算符两侧可以无空格;引用变量可省略 $ 符号;计算结果替换表达式本身,可结合echo命令输出。

同样对于变量X=1234,分别计算与78的加减乘除和求模运算结果:

 
    
  1. [root@svr5 ~]# X=1234
  2. [root@svr5 ~]# echo $[X+78]
  3. 1312
  4. [root@svr5 ~]# echo $[X-78]
  5. 1156
  6. [root@svr5 ~]# echo $[X*78]
  7. 96252
  8. [root@svr5 ~]# echo $[X/78]
  9. 15
  10. [root@svr5 ~]# echo $[X%78]
  11. 64

3)使用let命令

expr或$[]、$(())方式只进行运算,并不会改变变量的值;而let命令可以直接对变量值做运算再保存新的值。因此变量X=1234,在执行let运算后的值会变更;另外,let运算操作并不显示结果,但是可以结合echo命令来查看:

  1. [root@svr5 ~]# X=1234
  2. [root@svr5 ~]# let y=X+22
  3. [root@svr5 ~]# echo $y
  4. 1256
  5. [root@svr5 ~]# let X+=78 ; echo $X                    # X+=78(X=X+78)
  6. 1312
  7. [root@svr5 ~]# let X-=78 ; echo $X                 # X-=78(X=X-78)
  8. 1234
  9. [root@svr5 ~]# let X*=78 ; echo $X                 # X*=78(X=X*78)
  10. 96252
  11. [root@svr5 ~]# let X/=78 ; echo $X                 # X/=78(X=X/78)
  12. 1234
  13. [root@svr5 ~]# let X%=78 ; echo $X                 # X%=78(X=X%79)
  14. 64

步骤二:小数运算工具

1)bc交互式运算

先执行bc命令进入交互环境,然后再输入需要计算的表达式。以计算小数12.34与5.678的四则运算为例,相关操作如下:

 
    
  1. [root@svr5 ~]# bc
  2. bc 1.06.95
  3. Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
  4. This is free software with ABSOLUTELY NO WARRANTY.
  5. For details type `warranty'.
  6. 12.34+56.78                                        //加法
  7. 69.12
  8. 12.34-56.78                                        //减法
  9. -44.44
  10. 12.34*56.78                                        //乘法
  11. 700.66
  12. 12.34/56.78                                        //除法
  13. 0
  14. quit                                             //退出交互计算器
  15. [root@svr5 ~]#

2)bc非交互式运算

将需要运算的表达式通过管道操作交给bc运算。注意,小数位的长度可采用scale=N限制,除此以外也受参与运算的数值的小数位影响。以计算小数12.34与5.678的四则运算为例,相关操作如下:

  1. [root@svr5 ~]# echo 'scale=4;12.34+5.678' | bc
  2. 18.018
  3. [root@svr5 ~]# echo 'scale=4;12.34-5.678' | bc
  4. 6.662
  5. [root@svr5 ~]# echo 'scale=4;12.34*5.678' | bc
  6. 70.0665
  7. [root@svr5 ~]# echo 'scale=4;12.34/5.678' | bc
  8. 2.1733

2 案例2:条件测试操作

2.1 问题

本案例要求参考PPT上的示例,分别练习以下条件测试操作:

  • 字符串匹配
  • 比较整数值的大小
  • 识别文件/目录的状态
  • 多个条件/操作的逻辑组合

2.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值