shell脚本第一篇------变量的定义和使用

shell:  测试环境在linux上搭建
          可以使用shell脚本进行自动化部署测试环境

   1. shell介绍: 是一段应用程序,是用户和linux操作系统交互的桥梁
               弱类型语言,定义变量时,不需要指定变量的类型
    
    
               
    2. shell规范: shell脚本文件是以.sh进行结尾
               .sh文件的第一行内容为 #!/bin/bash ----表示使用shell进行编程
               注释: # 
    3. 变量:
               定义变量格式: 
                   变量名=变量值   等于号的两边不能存在空格
                                   变量值中也不能存在空格
                    由字母 数字 下划线组成, 不能以数字开头
                    例如 name=xiaoming         
                                
                    输出变量内容 echo $变量名 
                               
    4. 释放变量的值 unset 变量名称
                                  
     
    5. 特殊的变量定义,带空格的变量定义 :加双引号或者单引号
                                name="zhang san" 
                                name2='zhang san'
                              
双引号和单引号的区别:
       1. 双引号: 如果变量值中存在 $变量名的话, 输出结果将会是变量名对应的变量值 , 如果想原样输出内容在$前面加转义字符\
                              

       2. 单引号: 如果变量值中存在$变量名, 那么将原样输出, 单引号里面是什么就输出什么
                              
       3. 反单引号(Esc下面的键, 英文状态下): 
                     可以执行命令, n=`ls`
                     单引号内可以存放命令
                     
                    

案例1: 
编写shell脚本, 使用shell脚本, 输出当前所在的目录
步骤: 第一步 创建.sh文件
         第二步 编写脚本
         第三步 执行(两种方式)

          cd /   # 进到根目录
          mkdir shell_data/L1               # 创建文件夹 shell_data里面还有一个文件夹L1
          cd shell_data/L1                    #  进到L1目录下
          vim script1.sh  用i输入数据   # 创建文件输入脚本
                     第一行: #!/bin/bash
                     第二行   dir=`pwd`
                     第三行   echo $dir
        执行文件: 
         1)  ./文件名.sh
              script.sh    这个问题是权限问题一会解决
                       
          2)  sh 文件名.sh
                 sh script1.sh                         # 执行文件
结果: 输出文件路径 
          /shell_data/L1                      # 执行文件后,输出结果
           
注意:
          更改文件权限:
                          chmod  +x script1.sh      # 给script1.sh一个x权限 (参考Linux第四篇权限问题)
                           执行文件

                            
 

 

案例2: 
        计算/etc目录下有多少个文件, 用shell脚本实现
        ls -l 查看所有的文件
        ls -l | wc -l    统计所有的文件个数
 
步骤: 第一步 创建.sh文件
         第二步 编写脚本
                         
         第三步 执行(两种方式)   可根据第一个案例更改权限
                        


   结果 :
           在etc目录下共有234个文件

 

 

案例3:
         read用法:  键盘录入 
                           变量名可以有一个或者多个, 变量名之间用空格隔开, 值也用空格隔开
                     (1)    read      变量名     
                              read a   回车后此时需要输入一个值 ,赋值给a这个变量
                              
                     (2)    read 变量1 变量2 变量3 ...  给多个变量赋值 变量之间用空格分开
                               read a b c 
                               zhangsan lisi wangwu  键盘录入的值 也要用空格隔开
                              
                       (3) 特殊情况
                             如果变量值 多于 变量名称, 会把 最后剩余的值 赋值给 最后一个变量
                               
                       (4) read 添加提示信息
                              read -p "提示的内容" 变量名     
                             
实现统计任何指定目录下的文件个数 通过从键盘输入目录自动计算      
                        第一步, 写.sh 文件
                                  
                       第二步执行文件,输入目录
                                  
 

 

案例4 不使用read 直接输入命令的时候就把目录传进去  
参数传递: 向 .sh文件传送数据
                格式: 命令 文件名 参数 
                         sh script4.sh /etc    向script传递了 /etc 这个数据
                         文件中接收参数的方式:
                                                               $1表示接收第一个参数
                                                               $2表示接收第二个参数
                                                               $n表示第n个参数

      (1). 一个参数的情况     文件中接收参数的方式 $1接收第一个参数
                       
    (2.) 多个参数的情况
           1).  当有多个接收值,来接收传递的数据时, 第一个接收第一个数据,一 一对应着接收, 没有对应上就空着
           2). 如果是多着传递的数据的话, 就不接收多余的
           3). 如果接收是$1 $2 $4的话 就不接收第三个数据, 跳着的就跳过去,一定是一 一对应的
         
                          
                          
              4). 脚本中接收数据是 $0 则显示的是本文件的名称
                                   如果是 $@ 显示的是所有的参数
                                   如果是 $#  显示的是参数的个数

                                          

 

 

重定向:
          把文件中的命令内容输出到文件中去,
一种是正确的命令下重定向                                                      
            覆盖重定向: 命令 1>文件名      如 ls 1>a.txt 
            追加重定向: 命令 1>>文件名    如 ls /etc 1>>a.txt 
           

一种是错误的命令下重定向
             覆盖   2>         错误的信息也会重定向到文件中   如 lss 2>a.txt
             追加   2>>       错误的信息也会追加重定向到文件中 lls2>>a.txt
          

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值