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

news2024/9/23 3:09:14

     

目录

一、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 的连续数字

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/890831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习深度学习——transformer(机器翻译的再实现)

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——自注意力和位置编码(数学推导代码实现) 📚订阅专栏:机器…

【Python程序设计】基于Python Flask的上海美食信息与可视化宣传网站项目-附下载方式以及往届优秀论文,原创项目其他均为抄袭

基于Python Flask的上海美食信息与可视化宣传网站 一、项目简介二、开发环境三、项目技术四、功能结构五、运行截图六、功能实现七、数据库设计八、源码获取 一、项目简介 随着大数据和人工智能技术的迅速发展,我们设计并开发了一款基于大数据的上海美食系统。该系…

python使用matplotlib实现折线图的绘制

一、意义 数据可视化可以以简洁的方式呈现出数据,发现众多数据中隐藏的规律和意义。Matplotlib是一个数学绘图库。利用它可以制作简单的图表(散点图、折线图)。然后,将基于漫步概念生成一个更有趣的数据集–根据一系列随机决策生成…

Android学习--JNI

文章目录 JNI(Java Native Interface)NDK(Native Development Kit)一、创建一个JNI项目1.创建项目2.C文件字段说明1. Extern “C”2. JNIEXPORTh和JNICALL3. JNI接口命名规则4. JNIEnv5. jclass和jobject6. 数据类型7.JNI函数签名信息 二、JNI实现1.简单实现2.静态注册3.动态注…

Tomcat 一次请求的生命周期

在使用 Tomcat 的时候,我们只需要在 Servlet 实现类中写我们的业务逻辑代码即可,不需要管 Socket 连接、协议处理要怎么实现,因为这部分作为不经常变动的部分,被封装到了 Tomcat 中,程序员只需要引入 Tomcat 中即可&am…

DNNGP、DeepGS 和 DLGWAS模型构成对比

一、DNNGP DNNGP 是基于深度卷积神经网络,这个结构包括一个输入层,三个卷积层,一个批标准化层,两个dropout层,一个平坦化层,一个 dense层。 dropout层:在神经网络中,dropout层是一个非常有效的正…

拿捏--->打印爱心(小心机表白)

文章目录 题目描述算法思路代码示例思路一思路二 题目描述 利用java语言编写算法在控制台打印爱心算法 算法思路代码示例 思路一 打印心形主要分为上下两部分,如图: 下边主要是一个倒立三角形,容易打印。 上边可以分为左右两部分&#…

【数据结构】堆的初始化——如何初始化一个大根堆?

文章目录 源码是如何插入的?扩容向上调整实现大根堆代码: 源码是如何插入的? 扩容 在扩容的时候,如果容量小于64,那就2倍多2的扩容;如果大于64,那就1.5倍扩容。 还会进行溢出的判断&#xff0c…

NPDP含金量高吗?难考吗?

一,什么是NPDP认证? NPDP认证中文名为产品经理国际资格认证,New Product Development Professional (NPDP) ,是由美国 产品开发与管理协会 (PDMA) 所发起, 是国际公认的唯一的新产品开发专业认证,集理论、方…

论文及代码详解——可变形卷积(DCNv2)

文章目录 论文详解Stacking More Deformable Conv LayersModulated Deformable ModulesR-CNN Feature Mimicking 代码详解 DCNv2 是在DCNv1的基础上的改进版。 理解DCNv2之前,建议先读 《论文及代码详解——可变形卷积(DCNv1)》 论文详解 DC…

数据结构单链表

单链表 1 链表的概念及结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链 接次序实现的 。 在我们开始讲链表之前,我们是写了顺序表,顺序表就是类似一个数组的东西&#xff0…

651页23万字智慧教育大数据信息化顶层设计及建设方案WORD

导读:原文《651页23万字智慧教育大数据信息化顶层设计及建设方案WORD》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 目录 一、 方案背景 1.1 以教育…

三、数据类型

1、数值类型 (1)分类: (2)注意: 存储某一类数据,如果只想要表示整数,则在其后加unsigned即可; 在表示小数时,需要指明该小数的总长度和小数部分的长度&…

PostgreSQL空值的判断

PostgreSQL空值的判断 空值判断非空判断总结 空值判断 -- 查询为空的 is null,sql简写isnull select * from employees where manager_id isnull;select * from employees where manager_id is null;非空判断 -- 查询不为空的 is not null;sql简写notnull select * from empl…

c++基本语法

c基础语法 由于长时间没有使用过c&#xff0c;因此c的语法已经忘得差不多了&#xff0c;这篇文章主要是快读地过一遍c的基本语法。之前也写过一篇从c过渡到c的文章&#xff0c;有兴趣地可以看看。 文章链接 1.c的安装 mingw64的安装配置环境变量 2.语法 #include<iostre…

leetcode 力扣刷题 两数/三数/四数之和 哈希表和双指针解题

两数/三数/四数之和 题目合集 哈希表求解1. 两数之和454. 四数相加Ⅱ 双指针求解15.三数之和18. 四数之和 这个博客是关于&#xff1a;找出数组中几个元素&#xff0c;使其之和等于题意给出的target 这一类题目的&#xff0c;但是各个题之间又有些差异&#xff0c;使得需要用不…

网络及其计算的重点知识及回顾

概述 1.1 计算机网络的分类 按照网络的作用范围&#xff1a;广域网&#xff08;WAN&#xff09;、城域网&#xff08;MAN&#xff09;、局域网&#xff08;LAN&#xff09;&#xff1b; 按照网络使用者&#xff1a;公用网络、专用网络。 1.2 计算机网络的层次结构 应用层&a…

谷歌云平台替代超级计算机?助力心脏病学研究,省心智能还省钱

哈佛大学的研究团队在使用谷歌云平台代替超级计算机进行心脏病研究方面取得了重大突破。通常情况下&#xff0c;进行模拟人体循环系统中血块和肿瘤细胞的疗法需要强大的计算能力才能提供准确的结果。然而&#xff0c;超级计算机的高昂成本和有限的可用性成为这项研究面临的巨大…

Qt+Pyhton实现麒麟V10系统下word文档读写功能

目录 前言1.C调用python1.1 安装Python开发环境1.2 修改Qt工程配置1.3 初始化Python环境1.4 C 调用Python 函数1.5 常用的Python接口 2.python虚拟环境2.1Python虚拟环境简介2.2 virtualenv 安装及使用2.3 在C程序中配置virtualenv 虚拟环境 3.python-docx库的应用4.总结 前言 …

【计算机网络篇】UDP协议

✅作者简介&#xff1a;大家好&#xff0c;我是小杨 &#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; UDP协议 1&#xff0c;UDP 简介 UDP&#xff08;User Datagram Protocol&#xff09;是一种无连…