1.Shell脚本语言中的变量

关于shell脚本语言的概念:
    linux系统开启时,默认开启使用的解释器是bash

    我们可以在当前系统中开启很多解释器,在命令行中直接敲解释器的绝对路径,就会变更当前终端所使用的解释器,退出当前解释器输入exit

    查看都有什么解释器:
        cat /etc/shells
    
    在命令行里echo $0可以查看当前终端在用的解释器是什么
        
    shell脚本文件的后缀.sh

    脚本需要赋予x权限

    执行脚本的方法:
        bash 脚本    
            #脚本本身可以没有x权限
            #新开bash解释器执行脚本,但是执行脚本完成以后,会退出这个解释器,所以就看不出cd到别的目录这样的效果
            #想要看到cd到别的目录效果,加一个sleep 100就可以看到cd效果并退出解释器的效果
            #新开的bash也可以通过pstree看出效果
        source 脚本    
            #. 脚本  也相当于是source,简写
            #脚本本身可以没有x权限
            #使用当前系统在使用解释器执行脚本,如果脚本里有cd到别的目录这样的命令,可以直接看出效果
        加了x权限后直接执行脚本:
            直接可以执行脚本,使用的是当前终端中的解释器
        
    脚本结构:
        1.声明解释器
        #!/bin/bash
        2.注释,脚本功能变量含义等
        3.具体代码,会逐行执行

        用shell编写一个yum仓库示例:
            #!/bin/bash
            echo "[abc]
            name=haha
            baseurl=http://.....
            gpgcheck=0
            enable=0" > /etc/yum.repos.d/abc.repo 
                #" "里是一个整体,有空格有回车,都可以作为一个整体传递给后面

——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

变量:
    为了让脚本增加灵活度,适应多变的环境,而使用变量,变量是一个容器,以不变的名称存放可以变化的值
    
定义变量的规则:
    变量名称可以使用字母、数字、下划线
    不能以数字开头
    不能使用特殊符号
    
变量类型:
    环境变量(全局变量)、自定义变量、位置变量、预定义变量

————————————————————————————————————————————————————————————————————————————————————
    
    自定义变量:
        a1=10    #起了一个变量a1,赋值数字10,也可以赋值字符
        想要更改这个变量的值,可以重新赋值,比如a1=20
    如何使用变量:
        要引用这个变量就要与$一起使用,例如
        echo $a1        #就会把这个变量的值输出
        echo ${a1}RMB    #这就会输出10RMB,意思告诉系统我只要a1里的值,后面的RMB只是字符
        echo $(命令)    #会将命令的输出结果作为一条变量,比如echo $(hostname) 就会输出主机名
    自定义变量的取消:    
        如果是在系统中的命令行定义了一个变量,想要取消可以使用unset 变量名取消这个变量,当然在脚本中也可以取消
        unset a1
    查看当前shell环境中所有的变量:
        命令set

————————————————————————————————————————————————————————————————————————————————————
    
    环境变量:
        系统定义好的变量,可以直接使用的变量,这些变量名都是大写字母的组合,全局变量的意义就在于所有的bash(所有的终端都能使用)
        
        echo $USER                 
            #这个当前环境中的用户,谁去执行的这个脚本,输出谁的用户名,因为有可能不是root用户,此时就体现作用了
        echo $UID                
            #这个当前环境中用户UID
        echo $HOME                
            #这个当前环境中用户家目录
        echo $SHELL                
            #这个当前环境中用户使用的解释器,默认操作系统解释器是bash
        echo $PS1                
            #这个当前环境中用户的1级提示符,就是root@localhost ~    这个显示
        echo $PATH                
            #这个当前环境中当用户输入一个命令时,Bash会按照PATH变量中定义的目录顺序查找该命令,直到找到为止。
            #当我们写完一个脚本,可以直接放在这个变量定义的目录里,此时那1个脚本就不用写绝对路径去执行而是可以直接执行了,我们使用的命令都在这些目录里
        echo $PS2                
            #这个当前环境中用户的2级提示符,当我们同一条命令使用 \ 换行时,显示的 > 这个就是二级提示符
        echo $PWD                
            #这个当前环境中用户当前所在目录
        echo $HISTSIZE            
            #这个当前环境中历史命令的条数
    在shell环境中设置一个环境变量:
        a=10
        export a    
            #将a设置为全局变量,此时再开一个新的终端(另一个终端使用新的解释器),不设置成全局变量,只有本终端生效。
            #另一个终端里也有这个a变量了
        export -n a    
            #取消a这个全局变量,让它变为当前终端中的普通变量
        export VARNAME="value"
            #这会设置一个名为 VARNAME 的环境变量,并将其值设置为 "value"。
            #使用 export 设置的变量是临时的,如果关机,这个变量就会消失。
            #永久生效需要在你的 ~/.bashrc、~/.bash_profile、~/.zshrc(取决于你使用的Shell)或其他相关的初始化文件中添加 export 命令。
        
        命令env:
            可以显示当前bash中所有的环境变量

————————————————————————————————————————————————————————————————————————————————————            
        
    位置变量:
        $1 $2  ....
        我们在执行脚本时,需要在脚本后面输入参数比如bash a.sh 111 222
        此时111就是$1的值  222就是$2的值
        
————————————————————————————————————————————————————————————————————————————————————    

    预定义变量(在脚本里用):
        $#    所有的位置变量的数量,你脚本运行时输入了几个参数,这里就是几
        $$    当前这个脚本运行时的进程号
        $*    显示所有的位置变量,你参数是啥就显示啥
        $?    检测上一个指令是否有问题,只要不是0,上一条指令就有问题
        $0    脚本执行时,这个脚本的名称,也可以在脚本外用,在命令行用就是看当前的命令行用的哪个解释器
        $!    显示上一个放在后台的进程它的进程号
        
————————————————————————————————————————————————————————————————————————————————————        
        
    read -p变量:与用户交互,让用户输入一个值,自动将记录的值赋值给一个变量
    read -p '' 变量名    
        例如:
        vim /b.sh
        #!/bin/bash
        read -p '请输入用户名' a
        useradd $a &> /dev/null
            #当用户执行脚本的时候,会显示‘请输入用户名’并且用户可以输入内容,用户输入的内容就会赋值给变量a

————————————————————————————————————————————————————————————————————————————————————

$RANDOM
    这个变量是预定义的,存的是随机数,其范围默认是从0到32767
    通常与%连用
    比如:
        echo $[ RANDOM%4 ]
            #那么它的余数必然就是0、1、2、3,因为取余吗,余数肯定不会是4,是4就被整除了,也不可能是5,因为5还能被4除
            #比4小的数,除以4,余数是这个数本身。
        
        
        
    
    
    
    
    
    
    
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值