zoukankan      html  css  js  c++  java
  • Shell Script(1)----variable compare

    PS:在学习python的时间里,抽空复习自己学习的Linux下的shell脚本知识点

    1.数据类型

      学习一门语言,比较关心其数据的表示方式,以及数据的类型,这里首先看一个bash shell的脚本

      执行脚本如下,

      

    由此得出以下结论:

      shell中,所有的变量字面类型都是字符串;仅当变量值全部由数字(0-9)组成时,才可以对变量进行数学运算

    注:shell中,可通过declear或者typeset内部命令显式声明数据类型

      #declare -i var      //声明变量var为整型数

      #declare -a var      //声明变量var为数组

      #declare -f var      //声明变量var为函数

      #declare -r var      //声明变量var为只读

      这里我们重新编写脚本

      执行该脚本

      我们发现,尽管显式地声明了var的类型,但其依然可被当作字符串参与比较;使用这中声明的方式的好处在于----可以对变量直接进行数学运算操作,

    省去了作为字符串的繁琐方式

        let "var=var+1"        //var作为字符串

        declare -i var

        var=var+1        //var作为整型数,直接参与数学运算

    2.比较&测试

      shell中的测试比较主要分为3大类(个人意见):文件测试,数值比较,字符串比较

      (1)文件测试

        //测试存在

        -e  测试文件是否存在

        -d  测试目录是否存在

        -f  测试普通文件是否存在

        //测试权限

        -r  测试文件是否可读

        -w  测试文件是否可写

        -x  测试文件是否可执行

        //测试类型

        -s  测试文件是否为空

        -b  测试文件是否是块(block)设备,如硬盘等

        -c  测试文件是否是字符设备

        -p  测试文集是否是管道(pipe)

        -S  测试文件是否是一个socket

        更多还有:-h,-L,-t等等

        .........................

        //测试新旧

        f1 -nt f2  f1比f2新      //-nt  newer than

        f1 -ot f2  f1比f2旧   //-ot  older than

        f1 -ef f2  f1与f2都链接到同一文件上

      (2)数值比较

        -eq  等于

        -ne  不等于

        -gt  大于

        -lt  小于

        -ge  大于等于

        -le  小于等于

        注:也可使用> >= < <=的形式,但此时需要将表达式用双括号括起来,如 (("$a">"$b"))

      (3)字符串比较

        =   等于(POSIX version)

        ==  等于

        !=  不等于

        >   大于 

        <   小于

        -z  字符串长度为0 (zero),即字符串为空(null)

        -n  字符串不为空(null),not zero  

    Note:

      更多相关内容,参考<<Advanced Bash Shell Script>> Page:46,62    

  • 相关阅读:
    阶段2 JavaWeb+黑马旅游网_15-Maven基础_第3节 maven标准目录结构和常用命令_07maven常用命令
    阶段2 JavaWeb+黑马旅游网_15-Maven基础_第3节 maven标准目录结构和常用命令_06maven标准目录结构
    阶段2 JavaWeb+黑马旅游网_15-Maven基础_第2节 maven的安装和仓库种类_05仓库的种类和彼此关系
    阶段2 JavaWeb+黑马旅游网_15-Maven基础_第2节 maven的安装和仓库种类_04maven的安装
    阶段2 JavaWeb+黑马旅游网_15-Maven基础_第1节 基本概念_03maven一键构建概念
    阶段2 JavaWeb+黑马旅游网_15-Maven基础_第1节 基本概念_02maven依赖管理的概念
    kmalloc、vmalloc、__get_free_pages()的区别
    如何增加内核模块
    VFS四大对象之四-struct file
    VFS四大对象之三 struct dentry
  • 原文地址:https://www.cnblogs.com/tesion99/p/bash001.html
Copyright © 2011-2022 走看看