shell的编程方式

news2024/10/5 14:26:46

文章目录

  • 变量
    • 俩种方式
      • 第一种方式
      • 第二种方式
    • 取消变量
    • 数组
      • 创建数组
      • 获取数组元素的方式
    • read输出的方式
      • 限制输入的方式
  • 流程控制方式
    • for循环输出的方式
      • 第一种方式
      • 第二种方式
      • while循环输出的方式
      • select选择输出的方式
  • 判断方式
    • 判断的四种方式
      • 第一种方式
        • 第二种方式
        • 第三种方式
  • 算术的方式
    • 算术运算符号
    • 算术第二种方式
  • 字符串操作
      • 返回字符串长度
      • 截取字符串
      • 查询字符
      • 正则表达式
  • cut 关键字方式
      • 获取 第三行数据
      • 分割的方式
      • 提取后面4个字符

变量

俩种方式

第一种方式

直接输出的方式
=前后不能有空格

age=0
echo $age

在这里插入图片描述

第二种方式

变量不能直接修改

declear -r age=20
echo $age
age=30

在这里插入图片描述

declare -i cc=qq
cc=000
echo $cc

发现修改变量为0发现变量不能被修改
在这里插入图片描述

declare +i xx=www
xx=cc
echo $xx

发现变量可以被修改的方式
在这里插入图片描述

取消变量

name=tiantian
unset name
echo $name

在这里插入图片描述

数组

创建数组

arr=(1,2,3,4)
echo $arr

获取数组元素的方式

arr[下标]

arr[0]

read输出的方式

read -p "请输入的方式" name
echo $name

限制输入的方式

read -t 5 -sp "请输入密码" name
echo $name

流程控制方式

for循环输出的方式

第一种方式

for i in 1 2 3
do
	echo $i
done

第二种方式

for i in {1..4}
do
	echo $i
done

while循环输出的方式

i=1
while((5>i))
do
	echo $i
	((i++))
done

select选择输出的方式

select i in 1 2 3 4
do
	echo $i
	break;
done

在这里插入图片描述

判断方式

判断的四种方式

注意[] 前后必须要有空格

第一种方式

[ 表达式]

a=1
b=2
if [ $a = $b ]
then
	echo "相等"
else
	echo "不想等"
fi
第二种方式

[[ 表达式 ]]

a=1
b=2
if [[ $a = $b ]]
then
	echo "相等"
else
	echo "不想等"
fi
第三种方式
a=1
b=2
if [[ $a == $b ]]
then
	echo "相等"
else
	echo "不想等"
fi

算术的方式

算术运算符号

result=`expr 1 + 1`
echo $result
result01=`expr 10 / 2`
echo $result01
result02=`expr 10 % 2`
echo $result02

算术第二种方式

(())

echo $((5+1))
echo $((5*2))
echo $((5%2))

字符串操作

返回字符串长度

expr length "xxxx"

截取字符串

截取1到3个字符

expr substr "qqqq" 1 3

查询字符

expr index 字符串 查询字符

expr index "xxxqxx" "q"

正则表达式

expr match 字符串 正则表达式

expr match "xxacc" "/[A-Z]/g"

cut 关键字方式

文本的截取的方式

获取 第三行数据

cut -f 3 book.txt

分割的方式

cut book.txt -d , -f 1

提取后面4个字符

cut book.txt -c 4-

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

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

相关文章

C++之RTTI

1、RTTI(runtime type information)运行时类型信息 static_cast:用在编译器认可的转型 reinterpret_cast:用在编译器不认可的转型(不做任何的对齐操作) const_cast:去除常量属性 dynamic_ca…

国产开发板——香橙派Kunpeng Pro的上手初体验

开发板(Development Board)是一种特殊的电子产品,它的主要目的是为了帮助开发者快速地设计、测试和验证电子产品的硬件和软件设计。开发板通常提供了一个完整的硬件平台,包括微控制器、存储器、接口和其他外围设备,开发…

开源Mamba-2性能狂飙8倍!多个Mamba超强进化体拿下顶会

MambaOut的热度刚过去没多久,Mamba-2就带着它狂飙8倍的性能炸场了。 Mamba-2的核心层是对Mamba的选择性SSM的改进,同等性能下,模型更小,消耗更低,速度更快。与Mamba不同,新一代的Mamba-2再战顶会&#xff…

机器人舵机:关键要素解析与选择指南

在机器人技术日新月异的今天,舵机作为机器人的核心部件之一,扮演着至关重要的角色。它的性能直接关系到机器人的运动控制、稳定性以及精度等方面。那么,在选择和使用机器人舵机时,我们需要关注哪些关键要素呢?本文将为…

网络协议二

一、套接字Socket 基于 TCP UDP 协议的 Socket 编程,在讲 TCP 和 UDP 协议的时候,我们分客户端和服务端,在写程序的时候,我们也同样这样分。 在网络层,Socket 函数需要指定到底是 IPv4 还是 IPv6,分别对应设…

【数据集划分】oracle数据集划分(总结版)

【数据集划分】假如你有接近百万条oracle数据库数据(成真版) 写在最前面最终代码原理:生成随机索引并打乱顺序示例作用应用场景 遇到报错:ORA-01795,通过CTE(Common Table Expressions)和窗口函…

springcloud Feign调用拦截器(统一处理拷贝请求头实现透传信息、内部调用鉴权、打印feign调用)

springcloud Feign调用拦截器(统一处理拷贝请求头实现透传信息、内部调用鉴权、打印feign调用日志) 实现接口Feign.RequestInterceptor 实现接口 feign.RequestInterceptor 并注入到IOC容器即可生效 示范代码如下 拷贝请求头,将原请求信…

系统安全及其应用

系统安全: 1)保护数据安全, 2)互联网,网络业务服务等,必须要通过工信部的资质审核 3)保护品牌形象 应用: 账号安全 1)把不需要或者不想登录的用户设置为nologin us…

C++ 11 【可变参数模板】【lambda】

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:C修炼之路⏪   🚚代码仓库:C高阶🚚   🌹关注我🫵带你学习更多C知识   🔝🔝 目录 前言 一、新的类功能 1.1默认成员函数—…

龙迅#LT8711H支持TYPE-C/DP/EDP转HDMI功能应用,分辨率支持 1080p@60Hz,芯片内置固件!

1. 概述 LT8711H是一款高性能 Type-C/DP1.2/EDP 转 HD-DVI1.3 转换器,设计用于将 USB Type-C 源或 DP1.2 源连接到 HD-DVI1.3 接收器。 该LT8711H集成了符合 DP1.2 标准的接收器和符合 HD-DVI1.3 标准的发射器。此外,还包括两个用于 CC 通信的 CC 控制器…

如何去掉IDEA中烦人的警告波浪线

有时候想去掉idea中那些黄色的红色的warning波浪线,这些不是错误,并不影响执行,一直显示显得让人很烦躁,去"Editor" -> "Inspections"中一个个设置很麻烦。 可以通过设置代码检测级别来降低代码检查的严格…

26-unittest之装饰器(@classmethod)

unittest中的setUp可以在每个测试方法运行前执行,有效的减少了代码量。但有个弊端,比如打开浏览器操作,执行每个测试方法前都要重新打开一次,这样就会浪费很多时间。 是否可以只打开一次浏览器,执行完所有的测试方法后…

星火秘境游戏开发链游app定制开发源码部署

星火秘境是一款神秘而充满冒险的游戏,开发这样一款游戏需要综合考虑多个方面,包括游戏设计、美术设计、程序开发、音效制作等。下面我将简要介绍一下游戏开发和链游app搭建的一般流程: 游戏设计: 确定游戏类型:星火秘…

集团性企业数字化建设与经营管理解决方案

一、集团企业经营管理存在的问题 大型集团企业在内部财务经营管理过程中普遍存在五个方面的脱节问题。 1、战略与执行脱节:战略与执行“两张皮”,80%的企业管理者表示,战略执行过程中缺乏监督管理的系统或平台,造成执行结果大打…

手机怎么压缩视频?归纳了三种快速压缩方案

手机怎么压缩视频?在数字时代,手机已经成为我们记录生活的重要工具,而视频作为其中的一种主要形式,更是占据了极大的存储空间。然而,随着手机拍摄的视频越来越多,如何高效压缩视频以节省存储空间&#xff0…

什么无线领夹麦克风音质最好?领夹麦克风品牌排行榜前十名推荐

​在当今的数字化浪潮中,个人声音的传播和记录变得尤为重要。无论是会议中心、教室讲台还是户外探险,无线领夹麦克风以其卓越的便携性和连接稳定性,成为了人们沟通和表达的首选工具。面对市场上琳琅满目的无线麦克风选择,为了帮助…

OpenCV引入QT编译

OpenCV引入QT编译 为什么要引入QT编译编译方式 Reference: OpenCV 配置选项参考文档 网上实在找不到对应教程,在此做个记录。 为什么要引入QT编译 在没引入QT前,没有上述工具栏。 可以显示当前像素位置的像素值。 可以缩放查看每一个像素的大小。这对…

win10系统下WPS工具显示灰色全部用不了,提示登录

如果你在写文档或使用excel时发现导航栏的工具全部使用不了,弹出是需要您登录,可以通过以下操作不用登录。 按照 1(搜索框)—> 2(应用)—> 3(WPS Office)点鼠标左键—> 4&a…

巧用docker+jmeter快速实现分布式百万级并发

分享背景 碰到的问题: 一个JMeter实例可能无法产生足够的负载来对你的应用程序进行压力测试~ 解决办法: 1、修改jmeter配置文件里的内存堆 2、引入jmeter分布式压测 带来的问题: 如果我们要做分布式负载测试–我们需要1个…

二叉树的顺序结构(堆的实现)

前言 普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结 构存储。 现实中我们通常把堆 ( 一种二叉树 ) 使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统 虚拟进程地址空间中的堆是两回事&…