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剔除,也已经成…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...

R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...