Shell知识点入门总结

一:编写一个HelloWorld脚本

  1. 脚本如下
    a:首先我们在/opt/shellTest路径下创建一个helloworld.sh脚本
    b:内容
                    
    c:我们在指定脚本的时候要注意是否存在执行的权限
         
    d:执行效果
         

二:多命令处理

  1. 需求:
      在/opt/shellTest路径下创建一个test.txt文件,并且在文件中添加test shell内容。
  2. 首先我们在/opt/shellTest路径下创建一个test1.sh脚本,并且在脚本里面添加内容

    执行效果:
             

三:Shell中的变量

  1.  自定义变量(一定要注意,定义变量的时候等于号左右不能存在空格
              
  2. 撤销变量,使用unset
     
  3. 声明静态只读变量,readonly变量,这样就不能使用unset撤销了,也无法修改值
  4. 变量定义规则
    变量名称可以由字母,数字,和下划线组成,但是不能以数字开头,环境变量名称建议大写。
    在bash中,变量默认类型都是字符串类型,无法直接进行数值运算
    变量的值如果有空格,需要使用单引号或双引号括起来。
  5. 可以把变量提升为全局变量,可供其他shell程序使用。
    a:首先定义一个变量
         
    b:使用export提升为全局变量
         
    c:在脚本中使用这个全局变量
          

四:特殊变量$n

  1.  语法简介
     $n,n为数字,$0代表的是该脚本名称,$1-$9代表的是第一到第九个参数,十以上的参数需要使用大括号包含,
     如:${10}
  2. 实例
     a:需求,输出脚本的名称,以及输入参数1和输入参数2的值。
     b:创建脚本
                  
    c:效果
          

五:特殊变量$#

  1.  简介
     用于获取所有输入参数个数,常用语循环。
  2. 实例,获取输入参数的个数
     a:创建test4.sh脚本,使用${#}获取输入参数的个数
         
     b:调用效果
                   

六:特殊变量$*

  1.  基本语法
      这个变量代表的是命令行中所有的参数,$*把所有的参数看成一个整体
  2.         

七:特殊变量$@

  1.  基本语法       
     这个变量代表的是命令行中所有的参数,不过$@把每个参数区分对待

八:特殊变量$?

  1. 基本语法
     表示最后一次执行的命令的返回状态,如果这个变量的值为0,证明上一个命令正确执行,
     如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行
     不正确了。
  2. 实例,我们执行一下helloworld.sh脚本
     
               

九:运算符

  1.  基本语法
     "$((运算式))"或者"$[运算式]"
  2. 加减乘除(注意:expr运算符间要有空格)
     expr +    --->表示加
     expr -     --->表示减
     expr \*    --->表示乘
     expr /     --->表示除
     expr %   --->表示取余
  3. 实例一,计算3加2的值(下面可以发现只有+号两边加上空格才行)
     
  4. 实例二:计算3加2再乘以4
     
  5. 采用$[运算式]方式
     

十:条件判断

  1. 基本语法
     [ condition ] :注意,condition前后要有空格,条件非空几位true,比如:[ aa ]返回true, []返回false
  2. 常用的判断条件
     a:两个整数直接的判断
                     
     b:按照文件权限进行判断
           
     c:按照文件类型进行判断
           
  3. 判断22是否大于23
     
  4. 判断helloworld.sh是否具有写的权限
     
  5. 判断文件是否存在
      
  6. 多条件判断
     a:&&表示前一条命令执行成功时,才执行后一条命令,||表示上一条命令执行失败后,才执行下一条命令。
     b:实例
          

十一:if判断

  1. if判断
      ⑴基本语法
            if [ 条件判断 ];then
               程序
            fi
            或者如下:
            if [ 条件判断 ]
               then
                  程序
            fi

         (注意事项:
              a:  [ 条件判断 ], 中括号和条件判断直接必须有空格
              b:if 后面要有空格

         )             
      ⑵实例,输入一个数字,如果是1,则输出 “aaaaa”,如果是2,则输出“bbbbbb”,如果是其他什么都不输出。
            a:创建test5.sh脚本
                  
           b:内容
                

          c:效果
                

十二:case语句

  1.  case基本语法
                   

     
  2. 案例如下
     ⑴:需求,输入一个数字,如果是1,则输出aaa,如果是2,则输出bbb,如果是其它,则输出ccc
        a:创建test6.sh文件
               
        b:test6.sh内容
              


       c:效果
            

十三:for循环

  1. 基本语法
              
  2. 案例,需求:从1加到100
        a:创建test7.sh
                 
       b:内容
           

       c:效果(结果等于5050是对的)
              

  3. 语法2
     

  4. 案例,打印所有的输入参数
     a:创建test8.sh文件
     b:内容如下,上面的运算符提到过$*是接收所有参数的,这里我们也是可以使用$@的,也可以接收所有参数
           

    c:效果
        
    d:注意,我们这里也是可以使用$*将循环变成一个整体的,而$@是没有这个功能的
         
          效果如下:
          

     

十四:while循环

  1. 基本语法
                    
  2. 案例,从1加到100
     a:创建test9.sh,内容如下
          

     b:效果如下,总数为5050
          

十五:read读取控制台的输入

  1.  基本语法
             
  2. 案例:提示7秒内,读取控制台输入的名称
     a:创建read.sh文件,内容如下
                  
     b:效果
          

十六:系统函数

  1.  basename函数用法(主要用来获取文件的名称的)
     a:案例,截取/opt/shellTest/test9.sh文件的文件名称
              
        如果我们想获取的只是文件名称,后缀也不要,如下:
                 
  2. dirname函数用法(主要用来获取文件的路径的)
      a:案例
           

十七:自定义函数

  1.  基本语法
               
  2. 案例:计算两个输入参数的和
     a:创建一个test10.sh文件
     b:内容如下
                  
           效果:
            

十八:Shell工具

  1. cut
      ⑴简介
          
      ⑵基本用法
          
       ⑶案例,先我们存在一个文件cut.txt,内容如下
             
              a:要求,我们现在想要获取cut.txt文件中的第一列数据
                   命令:cut -d " " -f 1 cut.txt  因为每行两个字之间是空格,所以我们以空格作为切割条件,截取第一列数据。
                   
              b:要求,我们将cut.txt文件中的hai字截取出来
                    
                    命令:cat cut.txt | grep hai | cut -d " " -f 1
                    cat cut.txt    表示展示cut.txt内容
                    grep hai      表示按照hai字进行分组
                    cut -d " " -f 1 以空格进行分割截取第一列
           ⑷案例,获取系统变量PATH变量值第二个“:”(冒号)开始后的所有路径
                  
                 命令:echo $PATH | cut -d : -f 3-
                echo $PATH    表示展示PATH变量值
                cut -d : -f 3-  表示截取以冒号为分割的第三列之后所有的内容(3-表示第三列后所有的数据)
           ⑸切割ifconfig后打印的IP地址
                
               
               命令:ifconfig ens32 | grep "inet " | cut -d " " -f 10
  2. sed
       ⑴简介
              
       ⑵基本语法
            
            
           
       ⑶案例,数据准备sed.txt
             
             a:需求,将“mei nv” 这个单词插入到sed.txt第二行下,打印
                 
                 命令:sed "2a mei nv" sed.txt  表示在sed.txt文件的第二行下面增加一行数据mei nv
           
             b:需求,删除sed.txt文件中所有包含"hai"的行
                  
                  命令: sed "/hai/d" sed.txt  
                   /hai/ 表示所有包含hai的行
                   d  表示删除
             
               c:需求,将sed.txt文件中所有的wo替换成ni
                      
                     命令:sed "s/wo/ni/g" sed.txt
                     s  表示查找并替换
                     s/wo/ni/  表示查找wo并且替换成ni
                    g  表示global,全部替换
                 
                d:将sed.txt文件中的第二行删除并且将wo替换为ni
                     
                     命令:sed -e "2d" -e "s/wo/ni/g" sed.txt
                      -e "2d"  表示先删除第二行
                      -e "s/wo/ni/g" 表示再将所有的wo替换成ni
  3. awk
        ⑴简介
                
                       
        ⑵数据准备
                 
         ⑶需求,搜索passwd文件以root关键字开头的所有行,并输出该行的第7列
              
         ⑷需求:搜索passwd文件以root关键字开头的所有行,并输出该行的第一列和第七列,中间以“,”号分割。
               
        ⑸需求:只显示/etc/passwd的第一列和第七列,以逗号分割,且在所有行前面添加列名“user,shell”,在最后
                       一行添加“gogogo”
                 
                 命令:awk -F ':' 'BEGIN{print "user,shell"}{print $1","$7} END{print "gogogo"}' passwd

文章目录

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值