shell脚本学习——基础知识

一、常用快捷键

    Tab键可补全命令和文件内容
     ^c         终止运行的程序
     ^z         前台运行的程序挂起到后台
     ^d         退出
     ^l         清屏
     ^a         光标移动到命令行最前端
     ^e         光标移动到命令行后端
     ^u         删除光标前所有字符
     ^k         删除光标后所有字符
     ^r         搜索历史命令

二、常用通配符

     *     匹配0或多个任意字符
     ?     匹配任意单个字符
     [list]    匹配[]中任意单个字符或一组单个字符  [a-z]
     [!list]     匹配除[]中包含的任意单个字符
     {string1,string2,...}   匹配{}中任意单个或多个字符   {1..8}
bash中的引号:
     双引号“”    把引号内容看成整体,允许$调用其变量值
     单引号‘’    把引号内容看成整体,禁止调用变量值,shell特殊符号视为普通字符
     反撇号``    与$()一样,引号、括号里命令优先,如存在嵌套,反撇号无法使用 

三、shell基础知识

     shell种类: cat /etc/shells
                        /bin/sh          
                        /bin/bash              默认shell
                        /sbin/nologin          非交互,不能登录系统
                        /bin/dash              功能相对较少
                        /bin/csh               具有C风格的shell
                        /bin/tcsh              csh增强版,兼容csh
     shell脚本基本写法:
                        #!/bin/bash#!/bin/env 解释器
          执行方式: chmod +x shell.sh
                             ./shell.sh      或直接绝对路径
        非标准方式   bash shell.sh
                   或      source shell.sh
                             bash +x shell.sh    查看执行过程
                             bash +n shell.sh    检查脚本语法问题

四、变量

         变量名=变量值
         A=hello         定义变量值
         echo $A         调用变量
       或 echo ${A}         
         unset A         撤销变量
    变量定义规则:
          1、变量名严格区分大小写 
          2、变量名不能有特殊字符 # ?@ !
          3、变量名不能以数字开头 
          4、等号两边不能有空格
          5、变量名尽量见名知意
          
变量定义方式:
          1、 A=1234567
               echo ${A:2:4}          输出  3456       调用变量的一部分,从第三个字符截取4个字符
          2、``   $()    可以把命令结果赋值给变量
          3、交互式定义变量  read
            read [选项] 变量名
                  -p       定义提示用户信息
                  -n       定义字符数
                  -s       不显示输入内容
                  -t       定义超时时间,秒
            read -p "Input your name:" name
            read -s -p "Input your password:" pass
            read -n 5 -p "Input your name:" name  限制用户名5个字符
            read -t 3 -p "Input your name:" name   限制输入时间3秒
            read -p "Input your ip:" IP < ip.txt      变量引用文件内容
          4、定义有类型的变量(declare)
            declare 选项 变量名=变量值
                         -i    将变量作为整数       declare -i A=123
                         -r    定义只读变量          declare -r B=hello
                         -a   定义普通数组
                         -A   定义关联数组
                         -x   变量通过环境变量导出  declare -x AAA=123 相当于 export AAA=123
         5、本地变量与全局变量
               变量名=变量值      本地变量(只针对当前进程有效)
               env    查看当前用户的环境变量
               set     查看本地变量和环境变量
               export   导出环境变量
        系统启动后依次读取文件顺序:
               /etc/profile       全局变量,所有用户所有bash
               $HOME/.bash_profile  当前用户环境变量,用户登录时读取
               $HOME/.bashrc     当前用户bash信息,用户登录时读取
               /etc/bashrc      全局bash信息,别名,所有用户生效
               $HOME/.bash_logout   当前用户退出当前shell最后读取
               source    更改文件、变量生效
         系统变量
               $?        上一条命令的返回值
               $0        表示执行程序或脚本名
               $#        表示脚本后面参数个数
               $*        表示脚本后面所有参数,整体输出,每个变量空格隔开
               $@        脚本后面所有参数,参数独立,全部输出
               $1~$9     脚本后面位置参数
               ${10}~${n}   扩展位置参数
               $$         当前进程号
               $!         当前终端后台运行任务的最后一个进程号
               !$         调用最后一条命令的参数
               

五、四则运算

     四则运算符号:  
     $((   ))     
     $[  ]     
     expr    
     let
     bc
     i++     先赋值,再运算
     ++i     先运算,再赋值

你可能感兴趣的:(shell脚本学习)