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

利用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.mzph.cn/news/151883.shtml

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

相关文章

企业级SSD还是一个巨大的蓝海~

根据Allied Market Research市场分析报告显示,2020 年全球企业级 SSD 市场规模为 178.5 亿美元,预计到 2030 年将达到 468.9 亿美元,2021 年至 2030 年的复合年增长率为 10.2%。 扩展阅读:华为展望|2030年数据中心存储…

【IDEA 使用easyAPI、easyYapi、Apifox helper等插件时,导出接口文档缺少代码字段注释的相关内容、校验规则的解决方法】

问题 IDEA 使用easyAPI、easyYapi、Apifox helper等插件时,导出的接口文档上面,缺少我们代码里的注解字段,如我们规定了NOTNULL、字段描述等。 问题链接,几个月之前碰到过,并提问了,到现在解决&#xff0c…

一段来自《Verilog HDL 高级数字设计》的错误Verilog代码

笔者之前在阅读《Verilog HDL 高级数字设计》时的基4布斯乘法器一文时,就遇到了一段有问题的代码,而这个问题可以用Verilog基础:表达式位宽的确定(位宽拓展)文中的分析完美解决。 always (negedge clock) if (Start)…

大健康产业的先行者「完美公司」携手企企通,推进企业采购供应链数字化进程

随着中国经济持续向好,消费升级和美妆步骤增加,美妆和个人护理产品已逐渐成为中国消费者的日用消费品,推动了护肤品和化妆品的销售额增速均超过10%,成为中国整个快速消费品市场中的一颗亮眼明珠。 据国家统计局数据显示&#xff0…

Linux(Ubuntu)安装JDK环境

系统环境 Ubuntu20.04 下载JDK压缩包 前往Oracle官网进行后续下载或单击下载JDK压缩包 下拉找到JDK8,在Linux板块下选择适配系统架构的压缩包文件(后缀为tar.gz),系统架构可通过uname -m命令查看 安装JDK 安装环境通常放在/usr/local下,进入…

【数据结构】栈与队列面试题(C语言)

我们再用C语言做题时,是比较不方便的,因此我们在用到数据结构中的某些时只能手搓或者Ctrlcv 我们这里用到的栈或队列来自栈与队列的实现 目录 有效的括号解题思路:代码实现: 用队列实现栈解题思路:代码实现&#xff1a…

openGauss学习笔记-128 openGauss 数据库管理-设置透明数据加密(TDE)

文章目录 openGauss学习笔记-128 openGauss 数据库管理-设置透明数据加密(TDE)128.1 概述128.2 前提条件128.3 背景信息128.4 密钥管理机制128.5 表级加密方案128.6 创建加密表128.7 切换加密表加密开关128.8 对加密表进行密钥轮转 openGauss学习笔记-12…

网络运维与网络安全 学习笔记2023.11.19

网络运维与网络安全 学习笔记 第二十天 今日目标 STP工作原理、STP高级配置、MSTP工作原理 MSTP配置案例、MSTP负载均衡 STP工作原理 单点故障 PC之间的互通链路仅仅存在1个 任何一个设备或链路出现问题,PC之间都会无法通信 解决方案 增加冗余/备份设备 增加冗…

在Broker端进行消息过滤

在Broker端进行消息过滤,可以减少无效消息发送到Consumer,少占用网络带宽从而提高吞吐量。Broker端有三种方式进行消息过滤。 1.消息的Tag和Key 对一个应用来说,尽可能只用一个Topic,不同的消息子类型用Tag来标识(每条…

springboot引入redisson分布式锁及原理

1.引入依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.13.6</version> </dependency>2.配置类创建bean /*** author qujingye* Classname RedissonConfig* Description TOD…

HDFS入门--学习笔记

1&#xff0c;大数据介绍 定义 数据指的是&#xff1a;一种可以被鉴别的、对客观事件进行记录的符号&#xff0c;除了可以是最简单的 数字外&#xff0c;也可以是各类符号、文字、图像、声音等。 通俗地说&#xff0c;数据就是对人类的行为及发生事件的一种记录。 存在的价值…

2023超详细的软件测试八股文(入门篇)

今天给大家分享软件测试面试题入门篇&#xff0c;看看大家能答对几题 一、请你说一说测试用例的边界 参考回答&#xff1a; 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充&#xff0c;这种情况下&#xff0…

本地私域线上线下 线上和线下的小程序

私域商城是一种新型的零售模式&#xff0c;它将传统的线下实体店与线上渠道相结合&#xff0c;通过会员、营销、效率等方式&#xff0c;为消费者提供更加便利和高效的购物体验。私域商城的发展趋势表明&#xff0c;它将成为未来零售业的重要模式&#xff0c;引领零售业的创新和…

【开源】基于Vue.js的音乐偏好度推荐系统的设计和实现

项目编号&#xff1a; S 012 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S012&#xff0c;文末获取源码。} 项目编号&#xff1a;S012&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.1.1 音乐档案模块2.1…

【数据库】你听说过矢量数据库吗?

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️其他领域】 文章目录 前言什么是向量/矢量数据库嵌入模型使用向量数据库的优势与传统数据库的对比其他方面 AWS 如何支持您的矢量数据库需求&#xff1f;Amazon OpenSearch ServiceAmazon Aurora Pos…

Python loglog()函数

常用坐标下的图像显示 import matplotlib.pyplot as plt import numpy as np import mathplt.figure() x_input np.linspace(1, 10, 50) y_input x_input**2plt.plot(x_input, y_input,r-,linewidth2) plt.show()在loglog函数尺度下的曲线 plt.loglog(x_input, y_input,r-,…

机器人走迷宫问题

题目 1.房间有XY的方格组成&#xff0c;例如下图为64的大小。每一个方格以坐标(x,y) 描述。 2.机器人固定从方格(0, 0)出发&#xff0c;只能向东或者向北前进&#xff0c;出口固定为房间的最东北角&#xff0c;如下图的 方格(5,3)。用例保证机器人可以从入口走到出口。 3.房间…

[JDK工具-2] javap 类文件解析工具-帮助理解class文件,了解Java编译器机制

文章目录 1. javap -version 版本信息2. javap -verbose 输出附加信息3. javap -l 显示行号和局部变量列表4. javap -c 对代码进行反汇编&#xff08;或叫反编译生成汇编代码&#xff0c;一般说反编译是生成java代码&#xff09;&#xff0c;分解方法代码&#xff0c;也就是显示…

想要成为CSS大师?这些技巧是你必须知道的!

前言 CSS 是网页设计中不可或缺的一部分&#xff0c;掌握一些实用的 CSS 技巧&#xff0c;可以让你在设计中展现出更多的创意和个性。本文将介绍一些 CSS 技巧&#xff0c;帮助你提升自己的技能&#xff0c;成为一个真正的 CSS 大师。 1. 改变 input 自动填充的背景颜色 这段 …

高精度算法【Java】(待更新中~)

高进度加法 在Java中可以使用BigInteger进行高精度计算&#xff0c;除此也可以仿照竖式相加的计算原理进行计算。 BigInteger 提供所有 Java 的基本整数操作符的对应物&#xff0c;并提供 java.lang.Math 的所有相关方法。另外&#xff0c;BigInteger 还提供以下运算&#xff1…