shell基础复习笔记

变量的设置

   以等号连接,等号两边不能有空格

   变量名首个字符必须是英文,可以使用下划线,不能使用标点符号,不能使用bash里的关键字

   可以使用转义字符将特殊符号(如Enter、$、空格、!等)变成一般字符

  关于单引号,双引号的说明

    单引号里的任何字符都会原样输出,单引号里的变量是无效的,单引号中不能再出现单引号

    双引号里可以出现转义字符,双引号中不能再出现双引号

变量的显示

echo ${变量} 或 echo $变量

eg:

path=/usr/local

echo ${path} 或 echo $path

shell的特殊变量

   $$   当前shell进程ID,就是这个脚本的pid

   $0   当前文件名

   $n   去传递给脚本的参数,n是几就取第几个参数

   $#   取参数的个数

   $@  取所有参数,被双引号“”包含时,与$*稍有不同

   $*   取所有参数

   $?   最后命令的退出状态,0表示没有错误,其他任何值表明有错误

shell的算数运算

   + 加

   -  减

   *  乘

   /   除

   % 取余

   eg:i=$((5-2))  i的值为3

          echo $(($a+$b))

          echo $(($a-$b))

          echo $(($a*$b))

          echo $(($a/$b))

          echo $(($a%$b))

shell关系运算符

  关系运算符

   -eq  检测两个数是否相等,相等返回true

   -ne  检测两个数是否相等,不相等返回true

   -qt  检测左边的数是否大于右边的数,如果是,返回true

   -lt   检测左边的数是否小于右边的数,如果是,返回true

   -ge  检测左边的数是否大于等于右边的数,如果是,返回true

   -qg  检测左边的数是否小于等于右边的数,如果是,返回true

  布尔运算符

   !  非,表达式为true则返回false,否则返回true

   -o  或运算,有一个表达式为true,返回true

   -a  与运算,两个表达式都为true才返回true

  字符串运算符

   ==  检测两个字符串是否相等,相等返回true

   !=  检测两个字符串是否相等,不相等返回true

   -z     检测字符串长度是否为0,为0返回true

   -n     检测字符串长度是否不为0,不为0返回true

    str    检测字符串是否为空,不为空返回true

  文件测试运算符列表

    -d file 检测文件是否是目录,如果是,返回true

    -f file  检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回true

    -w file 检测文件是否可写,如果是,则返回true

    -x file  检测文件是否可执行,如果是,则返回true

    -s file  检测文件是否为空(文件大小是否大于0),部位空返回true

    -e file  检测文件(包括目录)是否存在,如果是,返回true

shell注释

  #开头的就是注释,shell中没有多行注释,只能每一行加一个#

shell字符串的操作

  字符串定义可以用双引号、单引号,也可以什么都不用

    eg:a=test

          a="test"

          a='test'

  字符串拼接,直接把一个字符串跟到另一个字符串后面即可

    eg:name=emily

          say="hello,$name!"

          say="hello,"$name"!"

          say=hello,$name!

  获取字符串长度,使用#

    eg:str=studyshell

          echo ${#str}

  获取字符串的某个元素

    eg:str="shell is a easy language"

          echo ${str:2:4}  #下标是从0开始

          结果为:ell

shell数组操作

  定义数组

    在Shell中,用括号来表示数组,数组元素用“空格”符号分隔开,不像其他语言中用逗号分隔,shell中只支持一维数组,数组的下标可以不连续

    eg:array=(value1 value2 value4)

    也可以通过下标赋值的方式定义一个数组

    eg:array[3]=2    array[5]=test

    数组的取值 ${数组名字[下标]}

     eg:${array[1]}

     获取数组所有元素

     eg:${array[*]} 或者 ${array[@]}

    获取数组长度

    eg:${#array[*]}

shell的if判断

  if ... fi

  if ... else ... fi

  if ... elif ... else ... fi

   语法如下:

     if [ 条件表达式 ]

     then 命令

     else

     命令

     fi

   

     if [ 条件表达式一 ]

     then 命令

     elif [条件表达式二]

     then

     命令

     else

      命令

     fi

shell的case判断

  case $变量名称 in

  变量值1)

     命令

  ;;

  变量值2)

      命令

  ;;

  *)

     命令

  ;;

  esac

shell的for循环

  for 变量 in 列表

  do

    命令

  done

shell的while循环

  while 条件

  do

   命令

  done

shell的函数

function 函数名( )

   {

           命令表

           return xx

   }

  函数应先定义,后使用

  调用函数时,直接利用函数名,如showfile,不必带圆括号

  shell脚本与函数间的参数传递可利用位置参数和变量直接传递

  通常,函数中的最后一个命令执行之后,就退出被调函数。也可利用return命令立即退出函数,其语法格式是:return [ n ]

原文地址:https://www.cnblogs.com/paopaoquan/p/6383514.html