shell编程 -- 基础

news2024/10/2 20:34:41

shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。

linux笔记

链接:https://pan.baidu.com/s/16GZCPfUTRzUqIyGnYwPuUg?pwd=s5xt
提取码:s5xt

脚本执行

  • 采用bash或者sh+脚本的相对路径或绝对路径(不用赋予脚本+x权限)
  • 采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x
  • 在脚本的路径前加上 ”."或source

前两种方式都是在当前shell中打开一个子shell来执行脚本内容,当脚本内容结束,则子shell关闭,回到父shell中。

第三种,也就是使用在脚本路径前加“.”或source的方式,可以使脚本内容在当前shell里执行,而无需打开子shell。

开子shell与不开子shell的区别就在于,环境变量的继承关系,如在子shell中设置的当前变量,父shell是不可见的。

系统预定义变量:$HOME $PWD $SHELL $USER

注释

# echo "这是注释"

echo "这不是注释"

:<<zhu
这是注释
zhu

变量

定义变量不能有空格

name=golitter
# 等价于
name="golitter" # 双引号可以转义
name='golitter' # 单引号不能转义

单引号与双引号的区别:

  • 单引号中的内容会原样输出,不会执行、不会取变量;
  • 双引号中的内容可以执行、可以取变量;

使用变量

echo $name # 输出 golitter
等价于
echo ${name} # 带花括号可以帮助识别变量边界

删除变量

unset name

声明静态变量:readonly变量,注意:不能unset。

变量定义规则

  1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写
  2. 等号两侧不能有空格。
  3. 在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
  4. 变量的值如果有空格,需要使用双引号或单引号括起来。

read读取控制台输入

基本语法 read [-p -t] parameter

  • -p:指定读取值时的提示符
  • -t:指定读取值时等待的时间(秒) 如果不加 -t 表示一直等待
  • parameter:指定读取值得变量

字符串

str="string"
echo ${#str}
echo ${str:0:3} # 输出:str

文件参数变量

在执行shell脚本时,可以向脚本传递参数。$1是第一个参数,$2是第二个参数,以此类推。特殊的, 0 是文件名(包含路径)。注意:超过 10 后要用花括号括起来 ‘ 0是文件名(包含路径)。注意:超过10后要用花括号括起来` 0是文件名(包含路径)。注意:超过10后要用花括号括起来{11}`。

image-20230427230148937

  • $#:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性
  • $*:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
  • $@:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
  • $?:最后一次执行的命令的1返回状态。如果为0,表示上一个命令正确执行,否则非正常执行。
比较$*$@区别

$*$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 2.. 2 .. 2..n的形式输出所有参数。

当它们被双引号“”包含时,$*会将所有参数作为一个整体,以”$1 $2 … n “形式输出; ‘ n“形式输出;` n形式输出;@`会将各个参数分开,以"$1" " 2 " . . . " 2" ... " 2"..."n"的形式输出所有参数。

运算符

$((运算式))
$[运算式]

条件判断

  • test condition
  • [ condition ] (* condition 前后要有空格)

常用判断条件:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LWgiIrup-1683084147468)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230502220142536.png)]

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

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

相关文章

TikTok跨境电商如何选品和营销?

鑫优尚电子商务&#xff1a;TikTok目前发展飞速&#xff0c;全球的MAU是5.6亿。现在作为全球炙手可热的短视频平台&#xff0c;全球流量相当庞大&#xff0c;覆盖75个语种、全球150个国家和地区。 对于从事跨境电商行业的人来说&#xff0c;又怎能错过一个流量这么好的平台呢&a…

ChatGPT注册详细步骤教程-ChatGPT申请教程

注册chatGPT账号的详细经验教程 注册ChatGPT账号是使用这一自然语言生成技术的关键步骤。下面是注册ChatGPT账号的详细经验教程&#xff1a; 访问OpenAI注册页面 在Web浏览器中打开OpenAI注册页面。 2.输入个人信息 在注册页面上&#xff0c;您需要提供以下个人信息&#…

树莓派 二维云台调零控制

目录 舵机的工作原理 案例程序 要求&#xff1a; 程序&#xff1a; 二维云台是通过IIC总线进行控制的&#xff0c;我们可以通过窗口命令输入&#xff1a;i2cdetect -y 1来检测IIC总线是否连接正常。 当有40显示的时候就说明IIC总线正常。 操控舵机我们需要一个PCA9685的模…

【移动端网页布局】流式布局案例 ④ ( Banner 栏制作 | 固定定位 | 标准流 | 百分比宽度设置 )

文章目录 一、Banner 栏样式及核心要点1、实现效果2、核心要点分析 二、完整代码示例1、HTML 标签结构2、CSS 样式3、展示效果 一、Banner 栏样式及核心要点 1、实现效果 在上一篇博客中 , 实现了 搜索栏 , 在本篇博客开始实现 搜索栏 下方的 Banner 栏 ; 2、核心要点分析 Bann…

OpenCV实战(21)——基于随机样本一致匹配图像

OpenCV实战&#xff08;21&#xff09;——基于随机样本一致匹配图像 0. 前言1. 基于随机样本一致匹配图像1.1 计算基本矩阵与匹配集1.2 随机样本一致算法 2. 算法优化2.1 优化基本矩阵2.2 优化匹配集 3. 完整代码小结系列链接 0. 前言 当两台摄像机拍摄同一场景时&#xff0c…

【Vue面试题】Vue2.x生命周期?

文章目录 1.有哪些生命周期&#xff08;系统自带&#xff09;?beforeCreate( 创建前 )created ( 创建后&#xff09;beforeMount (挂载前)mount (挂载后)beforeUpdate (更新前)updated (更新后)beforeDestroy&#xff08;销毁前&#xff09;destroy&#xff08;销毁后&#xf…

突发:深度学习之父Hinton为了警告AI的风险,不惜从谷歌离职!

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 今天&#xff0c;AI领域发生了一件标志性事件。那就是Hinton 为了能更自由的表达对AI失控的担忧&#xff0c;不惜从工作了10年的谷歌离职&#xff0c;可见他真的深切的感受到了危机。 不久前&#xff0c;纽约时报的一篇采访…

干货! ICLR:将语言模型绑定到符号语言中个人信息

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; ╱ 作者简介╱ 承洲骏 上海交通大学硕士生&#xff0c;研究方向为代码生成&#xff0c;目前在香港大学余涛老师的实验室担任研究助理。 个人主页&#xff1a;http://blankcheng.github.io 谢天宝 香港大学一年级…

武忠祥老师每日一题||不定积分基础训练(六)

解法一&#xff1a; 求出 f ( x ) , 进而对 f ( x ) 进行积分。 求出f(x),进而对f(x)进行积分。 求出f(x),进而对f(x)进行积分。 令 ln ⁡ x t , 原式 f ( t ) ln ⁡ ( 1 e t ) e t 令\ln xt,原式f(t)\frac{\ln (1e^t)}{e^t} 令lnxt,原式f(t)etln(1et)​ 则 ∫ f ( x ) d…

分布式配置中心Apollo教程

分布式配置中心Apollo教程 简介 Apollo配置中心课程是传智燕青老师针对微服务开发设计的系列课程之一&#xff0c;本课程讲解了Apollo分布式系统配置中心的使用方法和工作原理&#xff0c;并从实战出发讲解生产环境下的配置中心的构建方案&#xff0c;从Apollo的应用、原理、项…

transformer and DETR

RNN 很难并行化处理 Transformer 1、Input向量x1-x4分别乘上矩阵W得到embedding向量a1-a4。 2、向量a1-a4分别乘上Wq、Wk、Wv得到不同的qi、ki、vi&#xff08;i{1,2,3,4}&#xff09;。 3、使用q1对每个k&#xff08;ki&#xff09;做attention得到a1,i&#xff08;i{1,2,3,4…

STL容器类

STL 1. STL初识 1.1 迭代器 1.1.1 原生指针也是迭代器 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; void test01() {int arr[5] { 1,2,3,4,5 };int* p arr;for (int i 0; i < 5; i) {cout << arr[i] << endl;cout &…

在c++项目中使用rapidjson(有具体的步骤,十分详细) windows10系统

具体的步骤&#xff1a; 先下载rapidjson的依赖包 方式1&#xff1a;直接使用git去下载 地址&#xff1a;git clone https://github.com/miloyip/rapidjson.git 方式2&#xff1a;下载我上传的依赖包 将依赖包引入到项目中 1 将解压后的文件放在你c项目中 2 将rapidjson文…

Python小姿势 - # Python中的模板语言

Python中的模板语言 Python是一门非常灵活的语言&#xff0c;其中一个体现就是它可以使用模板语言来生成静态文件。模板语言是一种特殊的语言&#xff0c;用来将静态文本和动态数据结合起来生成新的文本。 Python的模板语言最早出现在Web应用开发中&#xff0c;用来生成HTML页面…

最新版升级GPT4-PLUS攻略

前置条件: 有一个gpt的免费账号 一个魔法上网工具(主要是azure国内版不能用) 1.如果你没有gpt账号&#xff0c;你可以用谷歌邮箱(可以用国内手机号注册)去openai.com官网注册&#xff0c;会卡在手机号那里&#xff0c;这个网上有相关服务&#xff0c;tb也行&#xff0c;反正你…

数学分析:隐函数定理和反函数定理

这是多元微积分的高潮部分。 对于一个函数F(x,y)0&#xff0c;我们想知道是否可以用yf(x)来表示它。 或者说&#xff0c;在不求出yf(x)表达式的情况下&#xff0c;我们能拿到一些额外信息&#xff1a; 比如f(x)等。 这就是隐函数定理。 这个很有意思&#xff0c;根据隐函数…

javaweb实验:JSP+JDBC综合实训_数据库记录的增加、查询

目录 前言实验目的实验原理实验内容实验过程流程图建立数据库和用户表实现用户登录功能连接数据库登录登录检测登录成功登录失败 实现用户注册功能注册表单注册验证及操作数据库注册成功注册失败 新闻管理功能 总结 前言 JSP是一种基于Java的Web编程语言&#xff0c;可以生成动…

[stable-diffusion-art] 指北-1

https://stable-diffusion-art.com/beginners-guide/https://stable-diffusion-art.com/beginners-guide/ Stable Diffusion教程目录 - 知乎按&#xff1a; 这个外国教程站中的文章太好了&#xff0c;数量适当&#xff0c;质量很高可惜博文只能按时间浏览&#xff0c;所以整理…

无线网络安全

这里写目录标题 目的数据加密WEPRSN 身份认证EAP802.1X&#xff08;EAPOL&#xff09; RSNA密钥派生密钥派生方法密钥派生流程 密钥缓存密钥缓存流程 目的 1.数据的完整性&#xff08;Integrity&#xff09;&#xff1a;用于检查数据在传输过程中是否被修改。 2.数据的机密性&…

【25】linux进阶——网络文件系统NFS

大家好&#xff0c;这里是天亮之前ict&#xff0c;本人网络工程大三在读小学生&#xff0c;拥有锐捷的ie和红帽的ce认证。每天更新一个linux进阶的小知识&#xff0c;希望能提高自己的技术的同时&#xff0c;也可以帮助到大家 另外其它专栏请关注&#xff1a; 锐捷数通实验&…