Shell脚本介绍

作者: Stone_説 | 来源:发表于2020-04-13 00:52 被阅读0次

    1. bash的基础特性

    1.1 变量类型

    决定数据存储格式,存储空间大小,参与运算种类
        字符型和数值型(整型,浮点型)
    强类型:定义变量时必须指定类型,参与运算必须符合类型要求,调用未声明变量会产生错误
    弱类型:无须指定类型,默认均为字符型,参与运算会自动进行隐式类型转换,变量无须先定义可直接调用
    变量引用:${var_name}, $var_name
    

    1.2 bash中的变量的种类

    根据变量的生效范围等标准

    1. 本地变量:生效范围当前shell进程:指对当前shell之外的其他进程,包括当前shell的子shell进程均无效
    2. 环境变量:生效范围为当前及其子进程
    3. 局部变量:生效范围为当前shell进程中某代码片段(通常指函数)
    4. 位置变量:$1,$2...来表示,用于让脚本代码中调用通过命令行传递给它的参数
    5. 特殊变量:$?,$0,$*,$@,$#
    
    1.2.1 本地变量
    变量赋值:name='value'
        可以使用引用:
            1. 可以使用直接字符串:name="username"
            2. 变量引用:name="$username"
            3. 命令引用:name='COMMAND', name=$(COMMAND)
        变量引用:${name},$name
            " ":弱引用,其中的变量会被替换为变量值
            ‘ ’:强引用,其中的变量不会被替换为变量值,而保持原字符串
        显示已定义的所有变量:set
        销毁变量:unset name
    
    1.2.2 环境变量
        变量声明、赋值:
            export name=VALUE
            declare -x name=VALUE
        变量引用:$name,${name}
        显示所有环境变量:export,env,printenv
        销毁:unset name
        bash有许多的内建的环境变量
            PATH,SHELL,UID,HISTSIZE,HOME,PWD,OLD,HISTFILE,PS1
    
    1.2.3 局部变量
        1. 不能使用程序中的保留字:例如if,for
        2. 只能使用数字,字母及下划线,且不能以数字开头
        3. 见名知义 
    
    1.2.4 只读变量
        readonly name
        declare -r name
    
    1.2.5 特殊变量
        在脚本代码中调用通过命令行传递给脚本的参数,shift换岗操作
            $1,$2...:对应第1,第2等参数
            $0:命令本身
            $*:传递给脚本的所有参数
            $@:传递给脚本的所有参数
            $#:传递给脚本的参数的个数
    

    2. bash的配置文件

    2.1 按生效范围划分,存在两类

    全局配置:
        /etc/profile, /etc/profile.d/*.sh, /etc/bashrc
    个人配置:
        ~/.bash_profile, ~/.bashrc
    

    2.2 按功能划分,存在两类

    profile类:为交互式登录的shell提供配置
        全局:/etc/profile   /etc/profile.d/*.sh
        个人:~/.bash_profile
        公用:用于定义环境变量,运行命令或脚本
    bashrc类:为非交互式登录的shell提供配置
        全局:/etc/bashrc
        个人:~/.bashrc
        公用:定义命令别名,定义本地变量
    

    2.3 shell登录

    交互式登录:
        直接通过终端输入账号密码登录:
        使用"su -UserName" OR "su -l UserName"切换用户
                /etc/profile -> /etc/profile.d/*.sh ->~/.bashrc_profile
                ->~/.bashrc->/etc/bashrc
    非交互式登录:
        su UserName
        图形界面下打开的终端
        执行脚本
        ~/.bashrc -> /etc/bashrc -> /etc/profile.d/*.sh
    

    2.4 编辑配置文件定义的新配置的生效方式

    重新启动shell进程
    使用source或.命令进程
    

    2.5 问题

    1. 定义对所有用户都生效的别名?
        /etc/bashrc
    2. 给所有登录系统用户输出提示信息?
        /etc/profile.d/*.sh
    3. 让用户的PATH环境变量的值多出一个路径,例如多出/usr/local/apache2/bin
        管理员:~/.bashrc_profile
        所有:/etc/profile.d/apache.sh
    

    3. bash中的算术运算

    +,-,*,/,%,**
    实现运算:
        1.let var=算术表达式          2.var=$[算术运算符]
        3.var=$((算术表达式))         4.var=$(expr arg1 arg2 arg3 ...)
    增强型赋值:
        +=,-=,*=,/=,%=
        let varOPERvalue
        eg.
            let var+=1          let var++
            let var-=1          let var--
    

    相关文章

      网友评论

        本文标题:Shell脚本介绍

        本文链接:https://www.haomeiwen.com/subject/xwfwmhtx.html