美文网首页Shell学习
第1次课-Shell脚本语言-第1讲

第1次课-Shell脚本语言-第1讲

作者: 泰克2008 | 来源:发表于2017-11-11 21:56 被阅读14次

    进入Shell语言基础学习?

    1、第一个Shell程序?

    1.1 创建Shell文件
        命令:touch hello.sh
    1.2 编写Shell程序
        定义文件声明
        #!/bin/bash
        echo "Hello world!"
    
        #!:表示约定标记,他会告诉系统这个脚本需要什么样子的解释器来执行,既是一种脚本体现。
        echo:表示命令用于输出文本信息
    
    1.3 修改文件权限
        1.3.1 权限结构
            分为了4个部分(QQ群为例)
            第一部分:文件类型->QQ群类型
            第二部分:文件所有者->群主
            第三部分:所有者同组用户->管理员
            第四部分:其他用户->群成员
    
        1.3.2 查看每一个部分权限
            查看文件权限
            命令:ls -l hello.sh
                -rw-r—r--
        1.3.3 修改文件权限
            命令: chmod +x ./hello.sh
                -rwxr-xr-x
    
    1.4 执行Shell脚本文件
        命令:./hello.sh
    

    2、Shell脚本语法->注释?

    ”#“->表示注视
    例如:
        脚本代码
            #!/bin/bash
            # 输出了Hello world!
            echo "Hello world!"
    注意:在Shell脚本中,没有多行注释,只有单行注释
    

    3、Shell脚本语言->变量

    3.1 变量定义->注意事项
        注意一:定义变量时候,变量名处不需要加"$"符号
        注意二:变量名和等号不能够有空格(和我们的一般语言不一样)
        注意三:变量名首字母必需是字母+下划线(a-z、A-Z)
        注意四:变量名中间不允许有空格
        注意五:不允许使用标点符号
        …细节
    3.2 只读变量
        关键字:readonly(只读,不能够修改)
        脚本代码
            name="HelloApp"
            readonly name
            #./hello.sh: line 35: name: readonly variable
            name="smile2017"
            echo "执行了"
    
    3.3 删除变量?
        语法:unset(干掉了)
        案例:unset 变量名
    
    3.4 变量类型
        3.4.1 类型一:本地变量
            作用域整个bash进程可以使用
            语法:name="Dream"
        3.4.2 类型二:局部变量
            作用域:当前代码段(修饰符:local)
            local name="Andy"
        3.4.3 类型三:环境变量
            作用域:当前shell进程以及子进程
            语法:export name="Dream"
        3.4.4 类型四:位置变量
            脚本代码
                #!/bin/bash
                name=${0}
                age=${1}
                sex=${2}
                echo "姓名:${name}   年龄:${age}  性别:${sex} "
            执行脚本
                ./hello.sh Jeff 150 男
            执行结果
                ${0}表示脚本文件名称
                参数从1开始
        3.4.5 特殊变量
            3.4.5.1 ${0}->特殊变量->文件名称
            3.4.5.2 ${?}->表示返回上一个命令执行状态返回值
                0:表示执行成功
                1:程序执行结果
                2:表示程序状态返回码(0-255)
                    系统预留错误(1、2、127)
                案例测试
                    #!/bin/bash
                    echo ${0}
                    echo ${?}
            
            3.4.5.3 $#->参数个数
    
            3.4.5.4 $*->参数列表
    
            3.4.5.5 $@->参数列表
    
            3.4.5.6 $$->获取当前shell进行ID
    
            3.4.5.7 $!->执行上一个指令PID
    
            3.4.5.8 ${*}和${@}区别?
                脚本代码
                    #!/bin/bash
                    echo ${*}
                    echo ${@}
                执行脚本
                    ./hello.sh Andy 200 男
                脚本结果
                    ${*}->参数列表:将所有的参数组成一个字符串->"Andy 200 男"
                    ${@}->参数列表:分开的->"Andy" 200 "男"
    

    4、Shell脚本语言->字符串?

    4.1 字符串->单引号
        脚本代码
            #!/bin/bash
            name='Andy'
            echo ${name}
                    
        
        脚本结果:Andy
    
    4.2 字符串->双引号
        脚本代码
            #!/bin/bash
            name="Andy"
            echo ${name}
    
        
        脚本结果:Andy
    
    4.3 字符串->拼接
        方式一:
            脚本代码
                #!/bin/bash
                name="Andy"
                age=100
                sex="男"
                info="${name} ${age} ${sex}"
                echo ${info}
    
        
            脚本结果:"Andy 100 男"
        方式二
            脚本代码
                #!/bin/bash
                name="Andy"
                age=100
                sex="男"
                info=" 姓名:"${name}"   年龄:"${age}"  性别:"${sex}"  "
                echo ${info}
                    
        
            脚本结果:"姓名:Andy 年龄:100 性别:男"
    
    4.4 字符串->获取字符串长度
        语法结构:${#变量名}
        脚本代码
            #!/bin/bash
            name="Andy"
            echo ${#name}
        脚本结果:4
    
    4.5 字符串->截取
        语法:${变量名:开始位置:截取长度}
        脚本代码
                #!/bin/bash
                name="I have a Dream"
        案例一:从字符串第3个开始截取,截取3个
            name="I have a Dream"
            result=${name:2:3}
            echo ${result}
        案例二:从字符串第5个开始截取,到最后一个结束
            方式一
                name="I have a Dream"
                length=${#name}
                result=${name:5:length-1}
                echo ${result}
            方式二
                name="I have a Dream"
                result=${name:5}
                echo ${result}
    4.6 字符串->删除
        语法一:${变量名#删除字符串 正则表达式}
            作用:从字符串开头(左边)开始匹配要删除字符串
            案例一:
                name="I have a Dream"
                result=${name#Dream}
                echo ${result}
                原因:匹配不到
            案例二:
                name="I have a Dream"
                result=${name#I}
                echo ${result}
            案例三:查找指定字符第一个,并且删除前面所有的字符(包含自己)
                name="I have a Dream"
                result=${name#*D}
                echo ${result}
    
            案例四:指定删除范围
                name="I have a Dream"
                result=${name#h*D}
                echo ${result}
    
        语法二:${变量名##删除字符串 正则表达式}
            作用:从字符串结尾(右边)开始匹配要删除字符串
            案例一
                name="I have a Dream"
                result=${name##*a}
                echo ${result}
            总结:语法一和语法二,都是从左边删除到右边,查找方向不一样
    
        语法三:${变量名%删除字符串 正则表达式}
            从字符串结尾开始匹配,删除匹配的字符串
            案例一:查找第一个字符(匹配第一个)
                代码一:
                    name="I have a Dream"
                    result=${name%a}
                    echo ${result}
                代码二:
                    name="I have a Dream"
                    result=${name%m}
                    echo ${result}
    
            案例二:查找指定字符第一个,并且删除前面所有字符(包含自己)
                name="I have a Dream"
                result=${name%h*}
                echo ${result}
    
            案例三:指定删除范围
                name="I have a Dream"
                result=${name%a*D}
                echo ${result}
    
        语法四:${变量名%%删除字符串 正则表达式}
            案例一:查找指定字符最后一个,并且删除前面所有的字符(包含自己)
                name="I have a Dream"
                result=${name%%a*}
                echo ${result}
    
        总结:
            从左边删除到右边
                #->表示查询方向从左到右
                ##->表示查询方向从右到左
            从右边删除到左边
                %->表示查询方向从右到左
                %%->表示查询方向从左到右
    

    相关文章

      网友评论

        本文标题:第1次课-Shell脚本语言-第1讲

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