shell脚本基础————表达式

     

目录

一、shell类型

类型

查看系统中支持的shell

查看系统默认shell

二、变量

一、组成

一、变量名

声明规范

声明方法

二、变量值

二、类型

一、系统内置变量(环境变量)

二、自定义变量

数字

字符串

引号的用法

 三、位置变量

 四、预定义变量

 五、作用域

六、shell中的字符串

获得字符串的长度

字符串取子串

字符串的截取

字符串的拼接

字符串替换:

 三、运算符

一、数学运算

 二、比较运算

一、数值比较

 二、字符串比较

 三、文件比较

四、 逻辑运算符

四、shell

编写规范

 shell运行规则

 echo $[$RANDOM]

seq          


 shell 本质上是 linux 命令,一条一条命令组合在一起,实现某一个目的,就变成了shell脚本。它从一定程度上 减轻了工作量,提高了工作效率。  脚本就是将手动一次性执行的命令进行规范且自动化

一、shell类型

        shell命令解释环境        

类型

        sh、ash、bsh、csh、bash、tcsh、dsh、zsh等

查看系统中支持的shell

        cat /etc/shells

查看系统默认shell

        echo $SHELL

二、变量

一、组成

一、变量名

        不会变化

声明规范

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

声明方法

驼峰式        如        userName

双驼峰式     如        UserName

shell写法                  user_name
                                username
                                USERNAME

二、变量值

         不断变化        可以是数字、字符

二、类型

一、系统内置变量(环境变量)

            如        env

二、自定义变量

        例如        varName=varValue

        等号两边不能有空格

数字

         var1=1

字符串

    shell中可以不使用引号
    当包含有空格时,需要使用引号

引号的用法

    不会引用变量值        单引号            '
    会应用变量值        双引号            "
    引用命令结果        反撇号            `        $(命令)            应用场景较多

 三、位置变量

        脚本后参数所在的位置        

      

$0表示自身
$1表示位置参数
$@

表示所有参数的列表

脚本内只能设置九个位置变量脚本外不受限制

        

 四、预定义变量

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

   0              成功

 非0            失败

 五、作用域

        默认变量只在当前shell下生效

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

六、shell中的字符串

获得字符串的长度

        赋值: str1=foodfornoting.gpg
        语法:    ${#StringName}
        案例:    echo ${#str1}
        输出结果:17

字符串取子串

语法:    ${#StringName:position:lenght}        (lenght没有定义时输出全部)
案例:    echo ${str1:0:3}
输出结果:foo

字符串的截取

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

字符串的拼接

语法:    StringName3=${StingName1}${StringName2}
案例:    str1=Hello
               str2=,Jack!
               str3=${str1}${str2}
               echo ${str3}
输出结果: Hello,Jack!

字符串替换:

语法:    ${StringName/OldString/NewString}
案例:    str1=foodfornoting.gpg
               echo ${str1/oo/kk}
输出结果:fkkdfornoting.gpg

 三、运算符

一、数学运算

        + - * / %            * 作为乘号时需要加转义符\

运算方法
            expr        expr $a + $b
            $((a+b))        echo $((a+b))
            $[a+b]        echo $[a+b]

            shell不支持浮点数的显示

 二、比较运算

一、数值比较

        -eq    等于
        -ne    不等于
        -lt    小于
        -le    小于等于
        -gt    大于
        -ge    大于等于

        test          测试

 二、字符串比较

        =                     字符串一致
        !=                    字符串不一致
        -z                    字符串为空
        !-z              字符串不为空

 三、文件比较

            -e        文件或目录是否存在
            -f        是否为文件
            -d        是否为目录
            -r        判断文件是否可读
            -w        判断文件是否可写
            -x        判断文件是否可执行

四、 逻辑运算符

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

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

        !                                                 取反
                                                         有真则假,有假则真

四、shell

编写规范

        第一行    #!/bin/bash
        第二行    #脚本的说明
        第三行    脚本正文

 shell运行规则

    没有x权限
                bash  脚本所在路径/脚本文件
                source 脚本所在路径/脚本文件
                .      脚本所在路径/脚本文件
                脚本存在cd  时,会切换到目标目录
    有x权限
                ./脚本文件
                脚本绝对路径/脚本文件

shell脚本运行追踪            bash -x 脚本所在路径/脚本文件

 echo $[$RANDOM]

echo $[$RANDOM]        随机生成数字

seq          

seq        序列排出数字

seq 1 10    返回1到10 的连续数字

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丗卅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值