代码改变世界

shell编程入门

2015-08-01 17:41  我是攻城师  阅读(151)  评论(0)    收藏  举报

  在Linux中shell编程的地位不言而喻,从事Linux相关的工作必须会shell编程,就shell编程的基础做一点总结。

  

  1、shell脚本以 #!/bin/bash 开头

  2、变量

    1)、定义变量。直接在输入变量名称即可,如果要将Linux指令的值赋值给变量,那么指令要使用 `` 包裹起来,就是Tab键上面的小点

      变量赋值=两侧不要有空格

      

    2)、变量可以使用{}包裹起来,也可以不使用。即使用 $time 与使用${time} 是相同的效果。

    3)、变量替换

      ${var} 变量本来的值

      ${var:-word} 如果变量的值为空或者已被删除返回word的值,不改变var的值

      

      ${var:=word} 如果变量的值为空或者已被删除返回word的值,将var的值改为word

      

      ${var:+word} 如果变量已被定义返回word的值,不改变var的值

      

  3、运算   

    1)、数学运算   

      原生的bash不支持数学运算,可以通过其他命令实现,expr,

        因为使用了Linux指令,所以也要使用``包裹起来

        加号两侧要留空格,

      

    2)关系运算

    -eq  (equal) -ne (not equal) –gt (greater than) –lt (less than) –ge (greater or equal) –le(less or equal)

    [ $a -eq $b ] 返回 true或者false

    3)、布尔运算

    ! 非    -o 或  -a 与

    4)、字符串运算

    = 两个字符串是否相等   Linux主要使用C语言编写,在C语言中非0既是真

    

    != 两个字符串是否不相等

    -z 字符串长度是否为 0 ,为0返回true  常用于判断指令的输出,传参

    5)、文件测试运算符

    -d file file 就是文件路径 文件是否是路径

    -f file  文件是否是普通文件

    -r file 是否可读

    -w file 是否可写

    -x file 是否可执行

    -s file 是否为空 文件大小是否为0  不为空返回true

    -e file 是否存在 存在返回true

    

    为了做演示这里使用的if语句

  4、字符串

    可以是单引号也可以是双引号也可以什么都不加

    单引号原样输出

    双引号会转义输出

    字符串直接拼接就行

    1)、字符串长度

      

    2)、截取字符串

      从第几个开始截取,截取几个,索引默认从1开始

      

    3)、查找子字符串

      返回子字符串在所要查找的字符串中的起始索引

      

    

  5、数组

    shell中使用() 定义数组,数组元素使用空格分开

    1)、创建数组

      array = (val1 val2 val3 val4)

      也可以单独定义数组各个分量的值

      array[0]=val1

      array[1]=val2

      array[2]=val3

      

    2)、获取数组的值  

      

    3)、获取数组长度

      

      获取字符串的长度也是用的#

    4)、打印出整个数组

      

      或者