Shell脚本语言基础一

第一点:Shell介绍

 Shell编译 --掌握基本Shell使用,修改和应用Shell

第二点:什么是Shell

 脚本语言,编译库(应用技术)

第三点:Shell环境

Mac环境支持Shell开发
Shell种类非常多
Bash所有的操作系统默认脚本语言
种类:bash,C Shell,K Shell等

第四点:进入Shell语言基础学习

1、第一个Shell程序
1.1 创建Shell文件
    命令:touch hello.sh
1.2 编写Shell程序
    定义文件声明
     #!/bin/bash
     echo "Hello word"
        #!:表示约定标记,他会告诉系统这个脚本需要什么样子的解释器来执行,即是一种脚本体现
        echo:表示命令用于输出文本信息
1.3 修改文件权限
    查看每一部分权限  命令 ls -l hello.sh
    修改文件权限  chmod +x ./hello.sh
1.4 执行Shell脚本文件
    命令: ./hello.sh

 2、Shell脚本语法 注释
 “#” 表示注释
注意:在Shell脚本中,没有多行注释,只有单行注释

3、Shell脚本语言-变量
3.1 变量定义-注意事项
注意二:变量名和等号不能够有空格(和我们的一般语言不一样)
注意三:变量名首字母必须是字母或者下划线
注意四:变量名中间不允许有空格
注意五:不允许使用标点符号
3.2 只读变量
    关键字 :readonly(只读,不能够修改)
3.3 删除变量
    语法:unset
    案例:unset 变量名
3.4 变量类型
    3.4.1 类型一:本地变量
    作用域整个bash进程可以使用
    语法:name="smile2018"
    3.4.2 类型二:局部变量
    作用域:当前代码段(修饰符:local)
    3.4.3 类型三:环境变量
    作用域:当前shell进程以及子进程
    语法:export name=“hello”
    3.4.4类型四位置变量
     name=${0}
     age=${1}
     sex=${2}
     echo "姓名:${name} 年龄:${age} 性别:${sex}"
     执行脚本: 
      ./hello.sh tom 23 男
     执行结果:  姓名:./hello.sh 年龄:tom 性别:23
                ${0}表示脚本文件名称 参数从1开始
    3.4.5 特殊变量
    ${0}-特殊变量-文件名称
    ${?} 表示返回上一个命令执行状态返回值
     0:表示执行成功
     1:程序执行结果
     2:表示程序状态返回码(0-255)
     系统预留错误(1,2,127)
     echo ${0}
     echo ${?}
     $# -参数个数
     $* -参数列表
     $@ -参数列表
     $$ -后去当前shell进行ID
     $! -执行上一个指令PID
    $*和$@区别
    $* 参数列表:将所有的参数组成一个字符串
    $@ 参数列表:字符串分开

4、Shell脚本语言-字符串
4.1字符串-单引号
4.2字符串-双引号
4.3字符串-拼接
脚本代码
     name="Andy"
     age=100
     sex="男"
     info="${name}${age}${sex}"
     echo ${info}
执行结果
    Andy100男

脚本代码
     name="Andy"
     age=100
     sex="男"
     info="姓名:"${name}" 年龄:"${age}" 性别:${sex}"
     echo ${info}
执行结果
    姓名:Andy 年龄:100 性别:男

4.4字符串-获取字符串长度
    语法结构:${#变量名}
    脚本代码
         name="Andy"
         echo ${#name}
    脚本结果
            4
4.5 字符串-截取
    语法:${变量名:开始位置:截取长度}
    脚本代码
    案例1:从字符串第四个开始截取,截取3个
     name="my name is XQ"
     result=${name:3:3}
     echo ${result}
    案例2:从字符串第5个开始截取,到最后一个结束
        方式1:
             name="my name is XQ"
             length=${#name}
             result=${name:4:length-1}
             echo ${result}
        方式2:
             name="my name is XQ"
             result=${name:4}
             echo ${result}
    4.6字符串-删除
    语法一:$(变量名#删除字符串 正则表达式)
    作用:从字符串开头(左边),开始匹配要删除的字符串
    案例1:
         name="my name is XQ"
         result=${name#XQ}
         echo ${result}
        原因:匹配不到
    案例2:
         name="my name is XQ"
         result=${name#my}
         echo ${result}
    案例3:查找指定字符第一个,并且删除前面所有的字符(包含自己)
         name="my name is XQ"
         result=${name#*X}
         echo ${result}
    语法二: $(变量名##删除字符串 正则表达式)
    作用:从字符串尾(右边)开始匹配要删除字符串
    案例一
         name="my name is XQ"
         result=${name##*X}
         echo ${result}
    总结:语法1和语法2,都是从左边删除到右边,查找方向不一样
    语法三:${变量名%删除字符串 正则表达式}
    从字符串结尾开始匹配,删除匹配的字符串
    案例1:查找第一个字符(匹配第一个)
        代码一:
             name="my name is XQ"
             result=${name%Q}
             echo ${result}
    案例2:查找指定字符第一个,并且删除前面所有字符(包含自己)
             name="my name is XQ"
             result=${name%m*}
             echo ${result}

     语法四:$(变量名%%删除字符串 正则表达式)
     案例1:查找指定字符最后一个,并且删除前面所有的字符(包含自己)
         name="my name is XQ"
         result=${name%%m*}
         echo ${result}

    总结:从左边删除到右边
                 #-表示查询方向从左到右
                 ##-表示查询方向从右到左
        从右边删除到左边
                %-表示查询方向从右到左
                %%-表示查询方向从左到右

猜你喜欢

转载自blog.csdn.net/qq_33323291/article/details/80166942