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.rhkb.cn/news/199742.html

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

相关文章

LDAP概念和原理介绍

相信对于许多的朋友来说,可能听说过LDAP,但是实际中对LDAP的了解和具体的原理可能还比较模糊,今天就从“什么是LDAP”、“LDAP的主要产品”、“LDAP的基本模型”、“LDAP的使用案例”四个方面来做一个介绍。 我们在开始介绍之前先来看几个问…

卷积神经网络(CNN)天气识别

文章目录 前期工作1. 设置GPU(如果使用的是CPU可以忽略这步)我的环境: 2. 导入数据3. 查看数据 二、数据预处理1. 加载数据2. 可视化数据3. 再次检查数据4. 配置数据集 三、构建CNN网络四、编译五、训练模型六、模型评估 前期工作 1. 设置GP…

【深度学习实验】网络优化与正则化(七):超参数优化方法——网格搜索、随机搜索、贝叶斯优化、动态资源分配、神经架构搜索

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、优化算法0. 导入必要的库1. 随机梯度下降SGD算法a. PyTorch中的SGD优化器b. 使用SGD优化器的前馈神经网络 2.随机梯度下降的改进方法a. 学习率调整b. 梯度估计修正 3. 梯度估计修正:动量法Momen…

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

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

销售团队可以借助CRM系统做什么?

销售主管都想有一支效率高、质量高的销售团队,无论对于初创企业还是大型企业销售团队都是企业盈利的主力部门,直接为企业带了业绩。如何提升销售团队水平?离不开CRM系统的辅助,CRM软件能为销售团队提供哪些支持?下面我…

MISRA 2012学习笔记(5)-Rules 8.10

文章目录 Rules8.10 基本类型模型(The essential type model)8.10.1 原理8.10.2 基本类型(Essential type)Rule 10.1 操作数不得具有不适当的基本类型Rule 10.2 在加减法运算中,不得不当使用本质为字符类型的表达式Rule 10.3 表达式的值不得赋值给具有较窄基本类型或…

系列一、介绍

一、概述 官网: ThreadLocal用于提供线程内的局部变量,不同线程之间不会互相干扰,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量传递的复杂度。 大白话: 线程并发:T…

编程怎么学习视频教程,编程实例入门教程,中文编程开发语言工具下载

编程怎么学习视频教程,编程实例入门教程,中文编程开发语言工具下载。 给大家分享一款中文编程工具,零基础轻松学编程,不需英语基础,编程工具可下载。 这款工具不但可以连接部分硬件,而且可以开发大型的软件…

Linux本地docker一键部署traefik+内网穿透工具实现远程访问Web UI管理界面

文章目录 前言1. Docker 部署 Trfɪk2. 本地访问traefik测试3. Linux 安装cpolar4. 配置Traefik公网访问地址5. 公网远程访问Traefik6. 固定Traefik公网地址 前言 Trfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件,能轻易的部署微服务。它支持多种后端 (D…

HINSTANCE是什么?

HINSTANCE 就是 HMODULE:

代码随想录 Day50 单调栈 LeetCodeT503 下一个最大元素II T42接雨水

前言 前面我们说到了单调栈的第一题,下一个最大元素I,其实今天的两道题都是对他的变种,知道第一个单调栈的思想能够想清楚,其实这道题是很简单的 考虑好三个状态,大于等于小于,其实对于前面这些题目只要细心的小伙伴就会发现其实小于和等于的处理是一样的都是直接入栈,只有大于…

prometheus基本介绍 prometheus和zabbix的区别 grafana可视化工具

一、 promethues概念prometheus介绍promethues的特点prometheus的工作原理prometheus的架构 二、promethues和zabbix的区别三、prometheus安装部署prometheus下载安装prometheus启动浏览器访问查看暴露指标将Prometheus配置为systemd管理 配置node_exporter监控项node_promethe…

redis cluster搭建

k8s部署 Redis Insight k8s部署redis集群_mob6454cc6c6291的技术博客_51CTO博客 占用的内存竟然这么小,才200M左右 随便选个节点进去,看能否连接上其他节点 redis-cli -h redis-cluster-v1-0.redis-cluster.project-gulimall.svc.cluster.local 再创建个…

表内容的操作(增删查改)【MySQL】

文章目录 表的 CRUDCreate(增加)插入记录插入冲突则更新记录替换记录 Retrieve(查找)查找记录指定表达式的别名为结果去重WHERE 子句运算符条件查询区间查询模糊查询空值查询 对结果排序筛选分页结果 Update(修改&…

【Java程序员面试专栏 算法训练篇】二叉树高频面试算法题

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是二叉树相关汇总的高频题目 遍历二叉树 遍历二叉树,分为递归和迭代两种方式,递归类似于DFS,迭代类似于BFS,【算法训练-二叉树 一】【遍历二叉树】前序遍历、中序遍历、后续遍…

解决在pycharm中使用matplotlib画图问题

第一,再导入包后直接绘图出现: AttributeError: module backend_interagg has no attribute FigureCanvas表明版本不兼容,我们需要加入:matplotlib.use(‘TkAgg’) 导入函数就变成了: import matplotlib matplotlib.…

clickhouse分布式之弹性扩缩容的故事

现状 社区不支持喔,以后也不会有了。曾经尝试过,难道是是太难了,无法实现吗?因为他们企业版支持了,可能是利益相关吧,谁知道呢,毕竟开源也要赚钱,谁乐意一直付出没有回报呢。 社区…

桌面运维。

Windows运行命令: color 01/02切换字符颜色cls 清屏ipconfig 设备的ip信息ipconfig /all 设备ip的所有信息 破解系统密码: 进PE系统,使用里面的工具破解 vmware workstation安装 网卡 网卡:ncpa.cpl window远程控制 mstsc …

Java引用类型(String)

目录 String解析 final的作用 String是否有长度限制 StringBuffer解析 StringBuilder解析 关键字、操作类相关 引用数据类型非常多大致包括:类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型。String类型就是引用类型。 String解析 JVM运行时会分…

Golang基础-面向过程篇

文章目录 基本语法变量常量函数import导包匿名导包 指针defer静态数组动态数组(slice)定义方式slice追加元素slice截取 map定义方式map使用方式 基本语法 go语言输出hello world的语法如下 package mainimport ("fmt""time" )func main() {fmt.Println(&…