Linux操作系统使用及C高级编程-D6-D8Linux shell脚本

news2024/12/29 16:00:42

利用shell命令写的脚本文件,后缀是.sh

shell脚本是一个解释型语言,不需要编译,可直接执行

书写:vi test.sh

#!/bin/bash:说明使用的是/bin目录下的bash

说明完后即可编写脚本文件

bash test.sh:运行文件

source test.sh:运行文件

./test.sh:运行文件

注意下图报错,因为没有执行权限,可使用chmod修改权限直接777最高权限

脚本变量

存放系统和用户需要使用的特定参数(值)

变量名:使用固定名称,由系统预设用户定义

变量值:能够根据用户设置、系统环境的变化而变化

自定义变量

在终端定义一个变量COUNT,并进行取出使用$

        

也可在代码中使用,特别注意=两端无空格,注释是#

  

若不想用此变量了,可看到在右图中最后打印出空格

取值

双引号:允许通过$符号引用其他变量值

        弱引用,其中的变量应用会被替换为变量值

单引用:进制引用其他变量值,$是为普通字符

        强引用,其中的变量引用不会被替换为变量值,而保持源字符串

反撇号:命令替换,提取命令执行后的输出结果,"和$(...)作用相同"

11反撇号:给其他变量赋值(反撇号是`),12相同功能

 ​​​​​​​​​​​​​​

数组

 

 

包含第二个元素,再往后一共打印3个元素

 只读变量

不可更改,不可删除

 位置变量和预定义变量

注意:$#统计参数个数,其中的./test2.sh未参与到统计中

 环境变量

Shell语句

 ​​​​​​​打印提示

​​​​​​​​​​​​​​​​​​​​​​​​​​​​

 执行三秒,若未输入就退出:​​​​​​​​​​​​​​

 输入不显示

 ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

 这里就是需要特备注意空格在哪里​​​​​​​​​​​​​​​​​​​​​,一个是等号两端没有,一个是+两端都有

 ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

 

在使用-n -z时,有时候结果正确,有时候错误,11最好加上""这样能特别明确的知道要取的是val1值,7行同样也是

 ​​​​​​​​​​​​​​​​​​​​​

 

 

 分支语句、循环语句

分支语句

 test命令也可使用[]代替,并且注意[]里两边都有空格

 判断用户是否存在,如果存在,打印存在,如果不存在,打印不存在

        使用到grep语句查找grep "^linux:" /etc/passwd,此时只查找到第一个linux

        所以判断用户存不存在,就是统计是否打印了,结合管道wc -l判断打印了几行

 而当要是想要输入y也是可以的话,也可以如6行这样:

 或的操作是:-o,下面表示大于100,小于0

与:-a

非:!

也可以这样:

29行 *)表示剩余情况

 循环语句

 使用for循环挨个打印当前文件​​​​​​​

打印输入参数

$*和$@都表示所有的参数,区别是,$*加上双引号后是作为一个整体进行一次性打印,而$@还是想上面那样进行打印

C语言方式使用for循环

 

使用while循环打印0~4

 当然同样使用c语言方式也可以

 

 ​​​​​​​

 Shell函数

 

5行的$1是获取10行的linux输入

 

加了local就是局部变量,否则函数体内部的都是全局变量

 

 而若是使用了命令置换的方式,全局变量val就无法使用了,这里需要注意

 

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

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

相关文章

逻辑漏洞(越权)

逻辑漏洞(越权) 0x01 何为逻辑漏洞 逻辑漏洞是指,在编写程序的时,一个流程处理处理逻辑,不够谨慎或逻辑不完整,从而造成验证失效、敏感信息暴露等问题,这类问题很难利用工具去发现&#xff0c…

『亚马逊云科技产品测评』活动征文|基于next.js搭建一个企业官网

『亚马逊云科技产品测评』活动征文|基于next.js搭建一个企业官网 授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方…

UDP网络套接字编程

先来说说数据在网络上的传输过程吧,我们知道系统其实终究是根据冯诺依曼来构成的,而网络数据是怎么发的呢? 其实很简单,网络有五层。如下: 如上图,我们知道的是,每层对应的操作系统中的那些地方…

Attingo:西部数据部分SSD存在硬件设计制造缺陷

今年5月,西部数据SanDisk Extreme Pro硬盘陆续有用户反馈有故障发生,用户反馈最多的问题是数据丢失和硬件损坏。8月份,因为这个事情,还被爆出,西部数据面临用户的集体诉讼。 近期,有一个专门从事数据恢复的…

【赠书第6期】MATLAB科学计算从入门到精通

文章目录 前言 1 安装与配置 2 变量定义 3 数据处理 4 绘图 5 算法设计 6 程序调试 7 推荐图书 8 粉丝福利 前言 MATLAB 是一种高级的科学计算和数据可视化平台。它由 MathWorks 公司开发,是科学研究、数据分析和工程实践中非常常用的一种软件工具。本文将…

PC 477B西门子触摸屏维修6AV7853-0AE20-1AA0

西门子触摸屏维修故障有:上电黑屏, 花屏,暗屏,触摸失灵,按键损坏,电源板,高压板故障,液晶,主板坏等,内容错乱、进不了系统界面、无背光、背光暗、有背光无字符,上电无任何显示 ,Power灯不亮但其他一切正常,双串口无法通讯 &#x…

力扣-414.第三大的数(两种解法)

文章目录 第三大的数解法一(排序加遍历对比)解法二(遍历一遍加迭代) 第三大的数 题目: 给你一个非空数组,返回此数组中第三大的数 。如果不存在,则返回数组中最大的数。 示例 1: 输…

【VRTK】【VR开发】【Unity】7-配置交互能力和向量追踪

【前情提要】 目前为止,我们虽然设定了手模型和动画,还能够正确根据输入触发动作,不过还未能与任何物体互动。要互动,需要给手部设定相应的Interactor能力。 【配置Interactor的抓取功能】 在Hierarchy中选中[VRTK_CAMERA_RIGS_SETUP] ➤ Camera Rigs, Tracked Alias ➤ …

基于SSM的高校毕业选题管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

【JavaEE初阶】 CSS相关属性,元素显示模式,盒模型,弹性布局,Chrome 调试工具||相关讲解

文章目录 🎋字体属性🚩设置字体🚩字体大小🚩字体粗细🚩文字样式 🎍文本属性🚩文本颜色🎈认识 RGB🎈设置文本颜色 🚩文本对齐🚩文本装饰&#x1f6…

牛掰的dd命令,cpi0配合find备份(不会主动备份),od查看

dd if设备1或文件 of设备2或文件 blocknsize countn 还原就是把设备1,2调过来 这里想到dump的还原是命令restore,想起来就写一下,省的总忘记 可以针对整块磁盘进行复制,对于新创建的分区,也不用格式化,可以直接…

进程管理(五)

处理器调度及多级调度 批量型往往先进入外存,再进入内存。终端型直接进入内存。 从磁盘选择若干作业,同时装入到内存,创建相应的进程,这是高级调度。 低级调度(进程调度):从进入内存的多道程序中选择一道把处理机给他 注意:时间片轮转是抢占式的 外设的调度统称为…

多态语法详解

多态语法详解 一:概念1:多态实现条件 二:重写:三:向上转型和向下转型1:向上转型:1:直接赋值:2:方法传参3:返回值 2:向下转型 一:概念 1:同一个引…

AIGC ChatGPT 4 将数据接口文件使用Python进行入库Mysql

数据分析,数据处理的过程,往往将采集到的数据,或者从生产库过来的接口文件,我们都需要进行入库操作。 如下图数据: 将这样的数据接口文件,进行入库,插入到Mysql数据库中。 用Python代码来完成。 ChatGPT4来完成代码输入。 ChatGPT4完整内容如下: 这个任务可以使用`…

趣学python编程 (五、常用IDE环境推荐)

Python环境指的是在计算机上安装Python解释器和相关的库,它是运行Python代码所必需的。那么开始Python编程前,准备安装好开发环境是前提。 默认的电脑上只是让人办公使用的,不带python编程开发环境。只有安装python环境,才可以编写…

Mistral 7B 比Llama 2更好的开源大模型 (四)

Mistral 7B在平衡高性能和保持大型语言模型高效的目标方面迈出了重要的一步。通过我们的工作,我们的目标是帮助社区创建更实惠、更高效、更高性能的语言模型,这些模型可以在广泛的现实世界应用程序中使用。 Mistral 7B在实践中,对于16K和W=4096的序列长度,对FlashAttentio…

Nosql之redis概述及基本操作

关系数据库与非关系型数据库概述 关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型…

云桌面 node_modules 切换艰辛历程记录 rebuild失败记录

拿到node_modules后更换 执行npm rebuild 重新构建 报错 node版本不一致 nvm切换 版本 不成功 换个窗口又变回原来版本号了 设置默认版本 nvm alias default 14.16.1 发现下面还有一个stable的还指向原来版本 nvm alias stable 14.16.1 rebuild 还是失败 逐个rebuild 每个依赖单…

【Java 进阶篇】Ajax 实现——JQuery 实现方式 `get` 与 `post`

嗨,亲爱的小白们!欢迎来到这篇关于使用 jQuery 实现 Ajax 请求的博客。在前端开发中,Ajax 是一项非常重要的技术,它使我们能够在不刷新整个页面的情况下与服务器进行数据交互。而在 jQuery 中,get 和 post 方法提供了简…