shell脚本基础

目录

一、Shell脚本概述

1.1Shell基本概念

1.2 Shell脚本应用场景

二、shell编程规范

2.1 用户登录shell

2.2 shell 脚本的概念

2.3 shell 脚本的应用场景

2.5shell 脚本的作用

 2.6类型

 2.7查看支持不同类型的编码集   

三,表达式

1.表达式的组成

1.1变量名

1.2声明规范

1.3声明方法

2.表达式的类型

2.1系统内置变量(环境变量)    env​编辑

2.2自定义变量

2.3位置变量

2.4预定义变量

2.5作用区域

2.6输出    echo $varName

三.shell中的字符串

四,运算符

4.1数学运算

4.2比较运算

4.2.1条件测试

4.2.2数值比较

4.2.3字符串比较

4.2.4文件比较

4.2.5逻辑运算符


一、Shell脚本概述

1.1Shell基本概念

将要执行的命令按顺序保存到一个文本文件
给该文件可执行权限
可结合各种Shell控制语句以完成更复杂的操作

1.2 Shell脚本应用场景

重复性操作
交互性任务
批量事务处理
服务运行状态监控
定时任务执行

二、shell编程规范

2.1 用户登录shell

登录后默认使用的shell程序,一般为/bin/bash
不同shell的内部指令、运行环境等会有所不同

2.2 shell 脚本的概念

1、将要执行的命令按顺序保存到一个文本文件

2、给该文件可执行权限

3、可结合各种Shell控制语句以完成更复杂的操作

总结:将需要执行的命令保存到一个文件中,按照顺序执行,它不需要编译,它是解释型的

2.3 shell 脚本的应用场景

①重复性操作

②交互性任务

③批量事务处理

④服务运行状态监控定

⑤时任务执行

2.5shell 脚本的作用

自动化完成软件的安装部署,如安装部署LAMP架构服务

自动化完成系统的管理,如批量添加用户

自动化完成备份,如数据库定时备份

自动化的分析处理,如网站访问量


 2.6类型

      sh        ash        bsh        csh        bash        tcsh        dsh        zsh
    查看系统中支持的shell        cat /etc/shells
    查看系统默认shell       echo $SHELL

 2.7查看支持不同类型的编码集   

三,表达式

1.表达式的组成

1.1变量名

1.1.1不会变化
    杯子    瓢    容器...

1.2声明规范


  1. 2.1 不能是数字或数字开头
  1.  2.2以_或字母开头
   1. 2.3变量名中不能包含特殊字符

1.3声明方法


    1.3.1驼峰式        userName
    1.3.2双驼峰        UserName
    1.3.3shell写法
        user_name
        username
        USERNAME

2.表达式的类型

2.1系统内置变量(环境变量)    env

2.2自定义变量

2.2.1 varName=varValue
2.2.2等号两边不能有空格
2.2.3数字    var1=1


2.2.4字符串    shell中可以不使用引号    当包含有空格时,需要使用引号
2.2.5引号的用法
    不会引用变量值        单引号            '
    会应用变量值        双引号            "
    引用命令结果        反撇号            `
        $(命令)            应用场景较多

2.3位置变量

$1       ......      $9超过9无效

2.4预定义变量

$0    脚本本身的名称
$#    脚本后参数的个数
$*    脚本运行时参数的内容(整体输出)
$@    脚本运行时参数的内容(逐个输出)
$?    脚本运行完毕后的返回值
   

2.4.1默认情况
        0            成功
        非0        失败

2.5作用区域

默认变量只在当前shell下生效
若要在当前及其子shell下生效,需要声明为全局变量    export

2.6输出    echo $varName

三.shell中的字符串

string
赋值: str1=foodfornoting.gpg
1)获得字符串的长度
语法:    ${#StringName}
案例:    echo ${#str1}
输出结果:17

2)字符串取子串
语法:    ${#StringName:position:lenght}
案例:    echo ${str1:0:3}
输出结果:foo


注意:lenght没有定义时,一直取到字符串的结尾!

3)字符串的截取

a)从左至右截取最后一个匹配字符串string之后的所有字符串
语法:    ${StringName##*string}
案例:    echo ${str1##*fo}
输出结果:rnoting.gpg

b)从左至右截取第一个匹配字符串string之后的所有字符串
语法:    ${StringName#*string}
案例:    echo ${str1#*fo}
输出结果:odfornoting.gpg

c)从右至左截取最后一个匹配字符串string之后的所有字符串
语法:    ${StringName%%string*}    
案例:    echo ${str%%o*}
输出结果:f

d)从右至左截取第一个匹配字符串string之后的所有字符串
语法: ${StringName%string*}
案例: echo ${str2%o*}
输出结果:foodforn

4)字符串的拼接
语法:    StringName3=${StingName1}${StringName2}
案例:    str1=Hello
    str2=,Jack!
    str3=${str1}${str2}
    echo ${str3}
输出结果: Hello,Jack!

 

5)字符串替换:
语法:    ${StringName/OldString/NewString}
案例:    str1=foodfornoting.gpg
    echo ${str1/oo/kk}
输出结果:fkkdfornoting.gpg

四,运算符

4.1数学运算
 

  4.1.1 + - * / %        * 作为乘号时需要加转义符\
   4.1.2运算方法
        expr                  expr $a + $b 


        $((a+b))            echo $((a+b))


        $[a+b]               echo $[a+b]
    4.1.3注意        shell不支持浮点数的显示

 

4.2比较运算

4.2.1条件测试


    test var1 比较符 var2
    [ var1 比较符 var2 ]
    &&        [ $a -ne $b ] &&  echo OK            条件 && 输出结果           条件为真输出

var1=1,var2=2  不等于输出ok


    ||        [ $a -ne $b ] ||  echo OK            条件 || 输出结果            条件为假输出

var1=2,var2=2 不等于输出ok

 

4.2.2数值比较

4.2.2.1设置var1=2,var2=2    

4.2.2.2  -eq        等于

var1等于var2则输出a等于b

 
 4.2.2.3   -ne        不等于

var1不等于var2则输出a不等于b

 4.2.2.4  -lt        小于

var1小于var2则输出小于等于

 4.2.2.5-le        小于等于

var1小于等于var2则输出var1小于等于var2

 4.2.2.6-gt        大于

var1大于var2则输出var1大于var2

 4.2.2.7-ge        大于等于

var1大于等于var2则输出var1大于var2

 

4.2.3字符串比较


   4.2.3.1 =        字符串一致

检查两个字符串是否相等:如果一致则输出相等

 

 4.2.3.2!=        字符串不一致

检查两个字符串是否不一直:如果不一致输出不相等

 

  4.2.3.3-z        字符串为空

检查字符串是否为空:如果var1为空则输出字符串为空

 

 4.2.3.4!     -z        字符串不为空

检查字符串是否不为空:不为空则输出字符串不为空

4.2.4文件比较

创建一个文件名为:123

 4.2.4.1  -e    文件或目录是否存在

检查文件或目录是否存在:存在则输出文件或目录存在


4.2.4.2  -f    是否为文件

检查是否为文件:是文件则输出是一个文件


4.2.4.3  -d    是否为目录

检查是否为目录:是目录则输出是一个目录


4.2.4.4  -r    判断文件是否可读

 检查是否可读:是则输出文件可读


4.2.4.5  -w    判断文件是否可写

检查文件是否可写:是则输出文件可写


4.2.4.6  -x   判断文件是否可执行

检查文件是否可执行:是则输出文件可执行

4.2.5逻辑运算符

4.2.5.1&&
    -a        并且,有假则假,全真为真            [ -r 111 -a -w 111 -a -x 111 ]            [ -r 111 ] && [ -w 111 ] &&  [ -x 111 ]
     [ -x /root/file1 -a  -d /root/file1 ]
     [ -x /root/file1 ]  && [ -d /root/file1 ]
4.2.5.2||
    -o        或者,有真则真,全假为假
     !    取反        有真则假,有假则真

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值