Shell_脚本语言01

内容一:Shell语言

​第一点:Shell介绍?

​​Android开发:动态库编译(.so文件)

​​iOS开发:静态库(.a文件)

​​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 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="Gina"

​​​​3.4.3 类型三:环境变量

​​​​​作用域:当前shell进程以及子进程

​​​​​语法:export name="Dream"

​​​​3.4.4 类型四:位置变量

​​​​​脚本代码

​​​​​​#!/bin/bash

​​​​​​name=${0}

​​​​​​age=${1}

​​​​​​sex=${2}

​​​​​​echo "姓名:${name}   年龄:${age}  性别:${sex} "

​​​​​执行脚本

​​​​​​./hello.sh Gina 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 Gina 200 男

​​​​​​脚本结果

​​​​​​​${*}->参数列表:将所有的参数组成一个字符串->"Gina 200 男"

​​​​​​​${@}->参数列表:分开的->"Gina" 200 "男"

​​​

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

​​​4.1 字符串->单引号

​​​​脚本代码

​​​​​#!/bin/bash

​​​​​name='Gina'

​​​​​echo ${name}​​​​​​​

​​​​脚本结果:Gina

​​​

​​​4.2 字符串->双引号

​​​​脚本代码

​​​​​#!/bin/bash

​​​​​name="Gina"

​​​​​echo ${name}​​​​​​​

​​​​脚本结果:Gina

​​​

​​​4.3 字符串->拼接

​​​​方式一:

​​​​​脚本代码

​​​​​​#!/bin/bash

​​​​​​name="Gina"

​​​​​​age=100

​​​​​​sex="男"

​​​​​​info="${name} ${age} ${sex}"

​​​​​​echo ${info}​​​​​​​

​​​​​​脚本结果:"Gina 100 男"

​​​​

方式二:

​​​​​脚本代码

​​​​​​#!/bin/bash

​​​​​​name="Gina"

​​​​​​age=100

​​​​​​sex="男"

​​​​​​info=" 姓名:"${name}"   年龄:"${age}"  性别:"${sex}"  "

​​​​​​echo ${info}​​​​​​​

​​​​​​​​脚本结果:"姓名:Gina 年龄:100 性别:男"

 

​​​4.4 字符串->获取字符串长度

​​​​语法结构:${#变量名}

​​​​脚本代码

​​​​​#!/bin/bash

​​​​​name="Gina"

​​​​​echo ${#name}

​​​​脚本结果:4

 

​​​4.5 字符串->截取

​​​​语法:${变量名:开始位置:截取长度}

​​​​脚本代码

​​​​​​#!/bin/bash

​​​​​​name="Have a Good Day"

​​​​案例一:从字符串第3个开始截取,截取3个

​​​​​name="Have a Good Day"

​​​​​result=${name:2:3}

​​​​​echo ${result}

​​​​案例二:从字符串第5个开始截取,到最后一个结束

​​​​​方式一

​​​​​​name="Have a Good Day"

​​​​​​length=${#name}

​​​​​​result=${name:5:length-1}

​​​​​​echo ${result}

​​​​​方式二

​​​​​​name="Have a Good Day"

​​​​​​result=${name:5}

​​​​​​echo ${result}

​​​4.6 字符串->删除

​​​​语法一:${变量名#删除字符串 正则表达式}

​​​​​作用:从字符串开头(左边)开始匹配要删除字符串

​​​​​案例一:

​​​​​​name="Have a Good Day"

​​​​​​result=${name#Dream}

​​​​​​echo ${result}

​​​​​​原因:匹配不到

​​​​​案例二:

​​​​​​name="Have a Good Day"

​​​​​​result=${name#I}

​​​​​​echo ${result}

​​​​​案例三:查找指定字符第一个,并且删除前面所有的字符(包含自己)

​​​​​​name="Have a Good Day"

​​​​​​result=${name#*D}

​​​​​​echo ${result}

 

​​​​​案例四:指定删除范围

​​​​​​name="Have a Good Day"

​​​​​​result=${name#h*D}

​​​​​​echo ${result}

 

​​​​语法二:${变量名##删除字符串 正则表达式}

​​​​​作用:从字符串结尾(右边)开始匹配要删除字符串

​​​​​案例一

​​​​​​name="Have a Good Day"

​​​​​​result=${name##*a}

​​​​​​echo ${result}

​​​​​总结:语法一和语法二,都是从左边删除到右边,查找方向不一样

 

​​​​语法三:${变量名%删除字符串 正则表达式}

​​​​​从字符串结尾开始匹配,删除匹配的字符串

​​​​​案例一:查找第一个字符(匹配第一个)

​​​​​​代码一:

​​​​​​​name="Have a Good Day"

​​​​​​​result=${name%a}

​​​​​​​echo ${result}

​​​​​​代码二:

​​​​​​​name="Have a Good Day"

​​​​​​​result=${name%m}

​​​​​​​echo ${result}

 

​​​​​案例二:查找指定字符第一个,并且删除前面所有字符(包含自己)

​​​​​​name="Have a Good Day"

​​​​​​result=${name%h*}

​​​​​​echo ${result}

 

​​​​​案例三:指定删除范围

​​​​​​name="Have a Good Day"

​​​​​​result=${name%a*D}

​​​​​​echo ${result}

 

​​​​语法四:${变量名%%删除字符串 正则表达式}

​​​​​案例一:查找指定字符最后一个,并且删除前面所有的字符(包含自己)

​​​​​​name="Have a Good Day"

​​​​​​result=${name%%a*}

​​​​​​echo ${result}

 

​​​​总结:

​​​​​从左边删除到右边

​​​​​​#->表示查询方向从左到右

​​​​​​##->表示查询方向从右到左

​​​​​从右边删除到左边

​​​​​​%->表示查询方向从右到左

​​​​​​%%->表示查询方向从左到右

每次匹配,如果左边或者右边第一个字母上来就不匹配是无法进行截取的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值