C高级 DAY3
一、shell中的变量
shell本身是擅长运行指令,是一种弱数据类型语言
它与c语言中定义变量有所不同
C中:
存储类型 数据类型 变量名;shell中:
变量=变量的值 ----->如果变量的值中间没有空格直接使用
变量='变量的值' ----->变量的值中间有空格
变量="变量的值" ----->使用一个已有的变量给新的变量赋值,并且赋值中有空格时
''内,$变量名,不会被展开
注意:shell中等号两边不允许有空格,空格会被识别为一个指令
使用变量时在变量前加$
$变量名 ${变量名} 无法区分变量名时使用
不使用${变量名}
name="John"
echo "$nameDoe" # 这将不会输出任何东西,因为Shell会尝试查找一个名为nameDoe的变量
使用${变量名}
name="John"
echo "${name}_Doe" # 这将输出 "John_Doe"
shell脚本的本质:命令的集合
修饰变量关键字
readonly ---->只读不能修改
unset ---->清空变量(不能清空只读(readonly)的变量)
local ---->定义局部变量(只能在函数中使用)
位置变量
用来接收脚本的外部传参(在命令行传递过来)
$数字
注意:9以上的数字需要加{}如${10} ${11}...
命令置换符
拿到指令输出的结果(赋值给变量)
sudo apt-get install lolcat
自动换行`` :反引号,esc键下面就是`` ----->常用
$()
二者是一个效果,只是想要使用反引号得需要下载
$()
:命令替换 ${}
:变量替换或变量操作
二、shell中的数组
C中
int arr[4]={1,2,3,4};shell:
数组名=(1 2 3 4) ----->每个元素之间以空格作为分隔shell中支持稀疏数组
数组名=([下标]=初始值1 [下标]=初始值2 ·····)#!/bin/bash
arr=(12 90 89 100) #shell中支持稀疏数组,下标不连续的数组
brr=([0]=90 [3]=70 [7]=900) crr[0]=29 #给crr数组中下标为0的元素赋值
crr[3]=78 #给crr数组中下标为3的元素赋值 #再重新给brr中没有提供的下标的元素赋值
brr[4]=67 echo ${brr[4]}
echo ${crr[3]}
访问数组中的所有元素
${数组名[*]} ${数组名[@]}
如果要记录数组中元素个数
${#数组名[#]}
三、shell中的输入输出
输出
echo 默认不解析转义字符并且会自动换行
-e:让echo指令解析转义字符
-n:取消换行
输入
read 变量名
read -s 变量名 ---->输入的内容不回显
read -p "提示信息" 变量名 ----->-p回显提示信息
read -n 字符个数 变量名 ----->控制输入的字符个数,当超过会自动停止
read -t 秒数 变量名 ----->控制读入数据的时间,如果指定时间内不输入会自动停止
read -a 数组名 ---->输入数组
四、shell中的算术运算
shell本身不擅长算术运算,需要借助于运算符和其他指令
(()) $[] let expr
(())
使用方法:
- ((表达式1,表达式2,表达式3,····))每一个表达式都会执行,取到最后一个表达式的结果
- (())内使用变量时,可以加$也可以不加$
- (())内的运算符两侧,可以有空格也可以没有空格
- 变量名=$((表达式)),获取(())的运算结果
- 可以直接在(())内进行赋值操作,((var1 = var1+var2))
$[]
使用方法: (仍然支持幂运算和自增自减运算)
- 变量名=$[表达式1,表达式2,表达式3,····],每一个表达式都执行,获取最后一个表达式的结果
- 运算时,运算符两侧可以有空格也可以没有空格
- 使用变量时,可以加$也可以不加$
- $[]本质上会遗留一个计算结果在,运算所在行,可以选择直接echo $[表达式] ,变量名=$[表达式]
let
使用方法:
- let 变量名=表达式 ----->let和变量名中间一定有空格
- let使用变量可以加$,也可以不加$
- let运算时,运算符两侧一定不能有空格
- let 表达式,运算是可以进行的但是没有办法接收运算的结果
expr
expr是一条指令
使用方法:
- expr使用变量的值时,必须加$
- 运算符两侧必须加空格 (不支持幂运算和自增自减运算)
- expr在使用时,一些字符需要转义,*,>,<,&,|······(简单的expr语句,可以先在命令行敲出来,出现语法错误说明有转义字符)
- expr直接回显指令的执行结果到终端
expr对字符串的运算
match str1 str2返回str2在str1中完全匹配的个数(str2可以作为str1中子串) substr STRING POS LENGTH如果字符串长度不够截取长度,就把字符串中所有的内容都截取出来从string中的第pos个位置开始截取长度为length的子串(pos从1开始)
index STRING CHARS返回字符在字符串中第一次出现的位置,如果是多个字符,返回最先在字符串中出现的字符的下标(下标从1开始)
length STRING求字符串的长度
五、shell中的分支语句
if...else分支
[]就是test指令
#单分支结构
if [ test语句 ] -----> if test 表达式
then语句块
fi#双分支
if [ test语句 ] -----> if test 表达式
then语句块
else 条件不成立执行的语句块
fi#多分支语句
if [ test语句 ] -----> if test 表达式
then语句块
elif [ test语句 ] ------> elif test 表达式
then条件不成立执行的语句块
fi#!/bin/bash
num1=90
num2=300
#if [ $num1 -le $num2 ]
if test $num1 -le $num2
then echo "num1<=num2"
fi
相关文章:
C高级 DAY3
一、shell中的变量 shell本身是擅长运行指令,是一种弱数据类型语言 它与c语言中定义变量有所不同 C中: 存储类型 数据类型 变量名;shell中: 变量变量的值 ----->如果变量的值中间没有空格直接使用 变量变量的值 ----->变量…...

Linux CentOS7命令及命令行
Linux CentOS7中命令及命令行是非常重要的概念。对大多数初学者来说是既熟悉又了解甚少。本文初步讨论这方面的内容,与同行者交流。 一、命令 命令又称为指令,(英语命令 command,可用简写cmd表示),在终端…...

【C++入门到精通】C++入门 ——搜索二叉树(二叉树进阶)
阅读导航 前言一、搜索二叉树简介1. 概念2. 基本操作⭕搜索操作🍪搜索操作基本代码(非递归) ⭕插入操作🍪插入操作基本代码(非递归) ⭕删除操作🍪删除操作基本代码(非递归࿰…...

学成在线-网站搭建
文章目录 代码素材来自b站pink老师 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>学成在线首…...

stm32同芯片但不同flash工程更换Device出现报错
目录 1. 问题描述2. 解决方案 1. 问题描述 stm32同芯片但不同flash工程更换Device出现报错 2. 解决方案 更换Device,我是从ZE换为C8: 把这个从HD更换为MD 解决!...
Element UI实现每次只弹出一个Message消息提示
前言 在开发Web应用程序时,我们经常需要使用消息提示来向用户展示重要信息。Element UI提供了一个方便易用的组件——Message,可以用于显示各种类型的消息提示。 然而,默认情况下,当多个消息提示同时触发时,它们会依…...
「网页开发|前端开发|Vue」04 快速掌握开发网站需要的Vue基础知识
本文主要介绍使用Vue进行前端开发的一些必备知识,比如:Vue应用实例,Vue的组件概念,模板语言和模板语法,计算属性,路由配置等等。 文章目录 本系列前文传送门前言一、Vue实例:项目入口二、模板语…...
解决Redis分布式锁主从架构锁失效问题的终极方案 含面试题
面试题分享 2023最新面试合集链接 2023大厂面试题PDF 面试题PDF版本 java、python面试题 项目实战:AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 史上最全文档AI绘画stab…...

建站系列(三)--- 网络协议
目录 相关系列文章前言一、定义二、术语简介三、协议的组成要素四、网络层次划分五、常见网络协议划分六、常用协议介绍(一)TCP/IP(二)HTTP协议(超文本传输协议)(三)SSH协议 相关系列…...
jetson orin nx无显示器启动
sudo apt-get install xserver-xorg-core-hwe-18.04 sudo apt-get install xserver-xorg-video-dummy在 /usr/share/X11/xorg.conf.d/ 中添加 xorg.conf 文件。 Section "Monitor"Identifier "Monitor0"HorizSync 28.0-80.0VertRefresh 48.0-75.0Modeline…...

【APUE】标准I/O库
目录 1、简介 2、FILE对象 3、打开和关闭文件 3.1 fopen 3.2 fclose 4、输入输出流 4.1 fgetc 4.2 fputc 4.3 fgets 4.4 fputs 4.5 fread 4.6 fwrite 4.7 printf 族函数 4.8 scanf 族函数 5、文件指针操作 5.1 fseek 5.2 ftell 5.3 rewind 6、缓冲相关 6.…...
es6---模块化
main.js import { bar } from "./module1"; import module2 from "./module2"; bar() module2()module1.js // 多变量导出,导入变量需要变量名一对一映射 export const module1module1 export function bar(params) {console.log(module1) }m…...

【项目 计网12】4.32UDP通信实现 4.33广播 4.34组播 4.35本地套接字通信
文章目录 4.32UDP通信实现udp_client.cudp_server.c 4.33广播bro_server.cbro_client.c 4.34组播multi_server.cmulti_client.c 4.35本地套接字通信ipc_server.cipc_client.c 4.32UDP通信实现 udp_client.c #include <stdio.h> #include <stdlib.h> #include <…...
创建简单的 Docker 数据科学映像
推荐:使用NSDT场景编辑器快速搭建3D应用场景 为什么选择 Docker for Data Science? 作为一名数据科学家,拥有一个标准化的便携式分析和建模环境至关重要。Docker 提供了一种创建可重用和可共享的数据科学环境的绝佳方法。在本文中ÿ…...
angualr:CSS一个div内两个子元素的高度自适应
问题: 如题 参考: CSS一个div内两个子元素的高度自适应-腾讯云开发者社区-腾讯云...

Java基础之static关键字
目录 静态的特点第一章、静态代码块第二章、静态属性第三章、静态方法调用静态方法时静态方法中调用非静态方法时 第四章、static关键字与其他关键字 友情提醒 先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。 静态的特点…...
iPhone 15 Pro有5项重大设计升级,让iPhone 15看起来很无聊
距离苹果9月份的发布会还有不到一周的时间,我们很快就会第一次看到iPhone 15系列。源源不断的传言表明,这一代人将对大多数机型进行另一次增量更新,这对那些想换iPhone 14或更旧手机的人来说是个坏消息。 但这一次的高端选择,iPh…...

xCode14.3.1运行MonkeyDev出现“Executable Not Found“的解决办法
安装MonkeyDev遇到的坑 环境:Xcode Version 14.3.1 (14E300c) 错误提示 is not a valid path to an executable file. 报错 /Users/xxxx//Library/Developer/Xcode/DerivedData/MonTest-ccparhdyzjuqhjdergwrngpfwwoh/Build/Products/Debug-iphoneos/MonTest.app…...

C# Emgu.CV+Tesseract实现识别图像验证码
效果图,简单的还行,复杂的。。。拉跨 懒得写讲解了,全部源码直接上吧 /// <summary>/// 验证码识别/// </summary>public partial class FrmCodeIdentify : FrmBase{private string _filePath;// 原图像Image<Bgr, byte> …...
ORACLE 11.2.0.4 RAC Cluster not starting cssd with Cannot get GPnP profile
最近,处理一次oracle 11.2.0.4 rac cluster由于cssd无法启动,导致集群一个节点的CRS集群无法正常启动的故障。原本,计划变更是从ASM剔除磁盘,解除存储到数据库服务器的映射;磁盘已经成功从ASM剔除,也已经成…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...