zoukankan      html  css  js  c++  java
  • Shell脚本学习笔记(三)算术运算

    算术运算


    在求值时,如果算术式中变量不存在或空值,则该变量的值为0

    不同进制的数字使用"基底#数字"的表示法,其中基底范围为2~64

    算术扩展:
    如果表达式中有变量,该变量名称之前最好不要加上$,以免该变量不存在造成语法的错误
    如果除法的运算结果有余数,则无条件舍去
    示例:

    View Code
    1 #!/bin/bash
    2 declare -i a i q s=0
    3 a=${1:-255}
    4 mask="128 64 32 16 8 4 2 1"
    5 Bmap=
    6
    7  echo "1的二进位128 64 32 16 8 4 2 1"
    8  for i in $mask
    9  do
    10 q=$((a/i))
    11 s=$((s+q))
    12 [ $q -gt 0 ] && Bmap=$Bmap"__1__" || Bmap=$Bmap"__0__"
    13 a=$((a-q*i))
    14 done
    15
    16 echo " $s : $Bmap"

    使用外部程序expr:
    好处:expr的本来作用是在“标准输出”显示表达式的值。利用这一特性,可以当做一个算术运算的工具。而且,由于它是外部程序,和shell的版本没有关系,几乎在各种os平台上都可以执行。跨平台。
    使用expr时,要特别注意“表达式”中是否含有bash shell的特殊字符,如*,|,<,>,!,&,(,)等,如果有要用\予以转义,否则出错。其次,在“表达式”中,运算符和操作数直接至少要有一个以上的空格符隔开。
    支持的运算种类:加减...,对比样式,找出子字符串的位置,取子字符串,计算字符串长度,视关键词为一般字符串等

    $[]和$(())类似

    declare:
    事先改变变量的属性
    算式中,运算符和操作数之间不可以有空格符,要紧密连接
    特殊符合不必使用\转义
    算是中,可以包含其他变量,变量之前不必加$
    let与之类似
  • 相关阅读:
    课堂作业之公文流转
    统计字符出现频率(java)
    课堂测试第八周
    HTML学习笔记——语法+骨架
    HTTP协议
    MVC架构模式概述
    CodeIgniter框架——CI中视图路径问题
    CodeIgniter框架——CI组件间信息流走向
    CodeIgniter框架——数据库类(配置+快速入门)
    chm文件无法阅读
  • 原文地址:https://www.cnblogs.com/njucslzh/p/1982211.html
Copyright © 2011-2022 走看看