当前位置: 首页 > news >正文

Shell 学习笔记 - 变量的类型 + 变量的赋值

1.6 Shell 变量的类型

Shell 变量分为四类,分别是

  • 自定义变量
  • 环境变量
  • 位置变量
  • 预定义变量

根据工作要求临时定义的变量称为自定义变量

环境变量一般是指用 export 内置命令导出的变量,用于定义 Shell 的运行环境,保证 Shell 命令正确执行,如 $0、$1、$#;

从命令行、函数或脚本执行等传递参数时,$0、$1 称为特殊位置变量

预定义变量是在 bashLinux 系统的默认 Shell)中已有的变量,可以直接使用,如 **$@、$***等。

1.6.1 自定义变量

自定义变量可以理解为局部变量或普通变量,只能在创建它们的 Shell 函数或 Shell 脚本中使用。

自定义变量的说明如下:

自定义变量表的说明
定义自定义变量变量名=变量值
变量名必须以字母或下画线开头,区分大小写。
IP1=192.168.2.115
使用自定义变量$变量名
查看自定义变量echo $变量名 set(所有变量:包括自定义变量和环境变量)
取消自定义变量unset 变量名
自定义变量作用范围仅在当前 Shell 中有效

1.6.2 环境变量

环境变量也可以称为全局变量,可以在创建它们的 Shell 及其派生出来的任意子进程 Shell 中使用。

环境变量的说明如下:

环境变量表说明
定义环境变量使用 export 命令声明即可。
例如,export back_dir =/home/backup
再如,export back_dir 将自定义变量转换为环境变量
使用环境变量$变量名${变量名}
查看环境变量echo $变量名,或 env
例如,`env
取消环境变量unset 变量名
环境变量作用范围在当前 Shell 和子 Shell 中有效

1.6.3 位置变量

在 Shell 中存在一些位置变量。位置变量用于在命令行,函数或脚本中传递参数,其变量名不用自己定义,其作用也是固定的。执行脚本时,通过在脚本后面给出具体的参数(多个参数用空格隔开)对应的位置变量进行赋值。

$0 代表命令本身,$1~$9 代表接收的第 1 ~ 9 个参数,$10 以上需要用 {} 括起来,如 ${10} 代表接收的第 10 个参数。

1.6.4 预定义变量

预定义变量在 Shell 中可以直接使用,位置变量也是预定义变量的一种。

  • 预定义变量的说明如下:

    预定义变量说明表
    $0脚本名
    $*所有参数列表,将所有参数当作一个单词。
    `$@所有参数列表,每个参数视为一个独立的字符串。
    $#参数的个数
    $$当前进程的 PID
    $!上一个后台进程的 PID
    $?上一个命令的返回值,0 表示成功
  • 预定义变量示例脚本如下:

    #!/bin/bash# 打印脚本名
    echo "脚本名: \$0"# 打印所有参数作为一个单词
    echo "所有参数作为一个单词(\$*): $*"# 打印每个参数作为一个独立的字符串
    echo "每个参数作为一个独立字符串(\$@): $@"# 打印参数个数
    echo "参数个数(\$#): $#"# 打印当前进程ID
    echo "当前进程ID(\$$): $$"# 打印上一个后台进程的进程ID
    echo "上一个后台进程的进程ID(\$!): $!"# 打印上一个命令的退出状态
    echo "上一个命令的退出状态(\$?): $?"

1.7. Shell 变量的赋值

Shell 变量赋值方式有五种:

  • 直接赋值
  • 从键盘读入赋值
  • 使用命令行参数赋值
  • 利用命令的输出结果赋值
  • 从文件中读入数据赋值

直接赋值也就是定义变量

从键盘读入赋值是指将 bash 的内置命令 read 读入的内容赋值给变量

在命令行 Shell 下输入的参数内容称为使用命令行参数赋值

利用命令的输出结果赋值是指将命令行的执行结果赋值给变量

从文件中读数据赋值就是把文件内容赋值给变量

1.7.1 直接赋值

在 Shell 中,当第一次使用某变量名时,实际上就已经给变量赋值了。

直接赋值的格式为 变量名=变量值,如,name=tinyun。为了避免歧义,直接赋值时禁止在等号两边添加空格,这跟常见的编程语言有所不同。

直接赋值举例如下:

a=3

上面语句中的 = 不是数学中的等号,而是赋值运算符,它的作用是将复制运算符右侧的值赋给左侧,其中,右侧的 3 就是变量的值,左侧的 a 就是变量名,a 被赋值后,a 就代表了 3.

1.7.2 从键盘读入赋值

在 Shell 脚本中, Shell 变量可以通过从键盘读入输入的内容来赋值。

命令格式为:

read -p [提示信息][变量名]

示例脚本如下:

#!/bin/bash# 使用 -p 参数提示用户输入姓名并存储到变量中
read -p "请输入您的姓名:" name# 使用 -p 参数提示用户输入年龄并存储到变量中
read -p "请输入您的年龄:" age# 输出用户输入的姓名和年龄
echo "您输入的姓名是:$name"
echo "您输入的年龄是:$age"

1.7.3 使用命令行参数赋值

使用命令行参数赋值是直接在命令后面跟参数,系统用 $1 来调用第一个参数,用 $2 调用第二个参数,这种赋值方法适用于参数经常变化且不需要交互的情况。

示例脚本如下:

#!/bin/bash# 输出第一个和第二个命令行参数
echo "第一个参数是:\$1"
echo "第二个参数是:\$2"

1.7.4 利用命令的输出结果赋值

在 Shell 程序中,可以将一个命令的输出结果当作变量的值,不过需要在赋值语句中使用反向单引号。

这种赋值方法可以直接处理上一个命令产生的数据。在生产环境中,把命令的结果作为变量的内容进行赋值的方法,在脚本开发时很常见。

示例脚本如下:

#!/bin/bash# 使用反引号将命令的输出结果赋值给变量
output=`ls -l`
echo "使用反引号赋值的结果:"
echo "$output"# 使用 $() 将命令的输出结果赋值给变量
output2=$(pwd)
echo "使用 `$变量名` 赋值的结果:"
echo "$output2"

1.7.5 从文件中读入

import pandas as pd# 读取 Excel 文件
df = pd.read_excel('example.xlsx', sheet_name='Sheet1')# 打开一个新的文本文件,准备写入数据
with open('output.txt', 'w') as file:# 遍历 DataFrame 的每一行,将每行的数据写入文件for index, row in df.iterrows():file.write(','.join(map(str, row.values)))file.write('\n')print("数据已成功写入 output.txt 文件")

相关文章:

Shell 学习笔记 - 变量的类型 + 变量的赋值

1.6 Shell 变量的类型 Shell 变量分为四类,分别是 自定义变量环境变量位置变量预定义变量 根据工作要求临时定义的变量称为自定义变量; 环境变量一般是指用 export 内置命令导出的变量,用于定义 Shell 的运行环境,保证 Shell …...

vue播放flv格式的直播流

在ios无法播放&#xff0c;安卓可以 安装 npm install flv.js --save页面 <template><div><videoref"videoElement"style"width: 100%; height: 100%"autoplayplaysinlinemuted></video></div> </template><scr…...

Qt入门小项目 | 实现一个图片查看器

文章目录 一、实现一个图片查看软件 一、实现一个图片查看软件 需要实现的功能&#xff1a; 打开目录选择图片显示图片的名字显示图片 在以上功能的基础上进行优化&#xff0c;需要解决如下问题&#xff1a; 如何记住上次打开的路径&#xff1f; 将路径保存到配置文件中&#x…...

qt仿制qq登录界面

#include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {// 设置窗口大小this->resize(window_width, window_heigth);// 固定窗口大小this->setFixedSize(window_width, window_heigth);// 设置窗口图标this->se…...

HashMap详解(含动画演示)

目录 HashMap1、HashMap的继承体系2、HashMap底层数据结构3、HashMap的构造函数①、无参构造②、有参构造1 和 有参构造2 (可以自定义初始容量和负载因子)③、有参构造3(接受一个Map参数)JDK 8之前版本的哈希方法&#xff1a;JDK 8版本的哈希方法 4、拉链法解决哈希冲突什么是拉…...

TVS的原理及选型

目录 案例描述 TVS管的功能与作用&#xff1a; TVS选型注意事项&#xff1a; 高速TVS管选型 最近项目中遇到TVS管选型错误的问题。在此对TVS的功能及选型做一个分享。 案例描述 项目中保护指标应为4-14V&#xff0c;而选型的TVS管位SMJ40CA&#xff0c;其保护电压为40V未…...

【机器学习】无监督学习:探索数据背后的隐藏模式

在机器学习的广阔领域中&#xff0c;监督学习因其直观的训练方式和广泛的应用场景&#xff0c;往往受到更多的关注。然而&#xff0c;随着数据量和数据类型的不断增长&#xff0c;无监督学习的重要性日益凸显。本文将详细介绍无监督学习的理论基础、常用算法及其在实际中的应用…...

使用Elasticsearch在同一索引中区分不同类型的文档

在使用Elasticsearch时&#xff0c;有时我们需要在同一个索引中存放不同类型的文档&#xff0c;并且这些文档的字段可能不一致。在早期版本中&#xff0c;我们可以使用types来实现&#xff0c;但在Elasticsearch 7.x及更高版本中&#xff0c;types概念已被弃用。本文将介绍如何…...

驾校在线考试系统源码 手机+PC+平板自适应

Thinkphp在线考题源码 驾校在线考试系统 手机PC平板 自适应&#xff0c;机动车驾驶培训学校驾校类网站源码带手机端 运行环境&#xff1a;phpmysql 内附安装说明 驾校在线考试系统源码 手机PC平板自适应...

c++的多态,继承,抽象类,虚函数表,虚函数等题目+分析

目录 题目 代码题 分析 主观题 题目 代码题 class A { public:virtual void func(int val 1) {std::cout << "A->" << val << std::endl;}virtual void test() { func(); } };class B : public A { public:void func(int val 0) { std…...

利用 Qwen-VL 进行私有化部署第一个 AI 多模态大模型

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…...

王思聪隐形女儿曝光

王思聪"隐形"女儿曝光&#xff01;黄一鸣独自面对怀孕风波&#xff0c;坚持生下爱情结晶近日&#xff0c;娱乐圈掀起了一场惊天波澜&#xff01;前王思聪绯闻女友黄一鸣在接受专访时&#xff0c;大胆揭露了她与王思聪之间的爱恨纠葛&#xff0c;并首度公开承认&#…...

学习笔记——网络管理与运维——SNMP(SNMP原理)

四、SNMP原理 SNMP的工作原理基于客户端-服务器模型。其中&#xff0c;网络管理系统是客户端&#xff0c;而网络设备是服务器。客户端向服务器发送请求消息(即"Get"或"Set"命令)来获取或修改服务器的信息。服务器收到请求消息后&#xff0c;会返回相应的响…...

基于STM32和人工智能的自动驾驶小车系统

目录 引言环境准备自动驾驶小车系统基础代码实现&#xff1a;实现自动驾驶小车系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景&#xff1a;自动驾驶应用与优化问题解决方案与优化收尾与总结 1. 引言 随着人工智能和嵌入式系统技术的…...

简单介绍vim

文章目录 前言一、Vim的特点二、安装Vim三、设置Vim配置文件的位置&#xff1a;编辑配置文件&#xff1a;添加配置选项&#xff1a;保存并退出编辑器&#xff1a;快速配置验证设置&#xff1a; 总结 前言 Vim是一款强大的文本编辑器&#xff0c;被广泛用于各种编程和文本编辑任…...

使用本地数据对transformers模型进行微调训练

模型 transformers模型是使用比较多的模型&#xff0c;奈何各个都是体积大&#xff0c;找了一个使用人多不是很大的模型进行训练。 需要魔法 bert-base-uncased模型仓库地址 huggingface下的所有仓库都是git的&#xff0c;也就意味着你可以使用 git clone 可以下载仓库内所有的…...

Java面试题:讨论何时需要创建自定义异常类,并展示如何实现一个自定义异常

在Java中&#xff0c;创建自定义异常类的目的是为了更加清晰和有意义地表示特定的错误情况&#xff0c;增强代码的可读性和可维护性。以下是一些需要创建自定义异常类的常见场景以及如何实现一个自定义异常。 何时需要创建自定义异常类 特定业务逻辑错误&#xff1a; 当业务逻…...

什么是进程

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在了解进程之前&#xff0c;我们需要知道多任务的概念。多任务&#xff0c;顾名思义&#xff0c;就是指操作系统能够执行多个任务。例如&#xff0c;…...

电脑提示d3dcompiler_47.dll丢失的解决方法,实测靠谱的5种方法

在计算机使用过程中&#xff0c;缺失d3dcompiler_47.dll这一系统文件是一个常见问题&#xff0c;尤其是对于游戏和图形密集型应用程序用户来说尤为重要。这个文件是DirectX软件工具包的一部分&#xff0c;主要用于处理图形渲染的应用程序接口的核心元素。当你在运行游戏或某些软…...

SQLserver前五讲课堂笔记

第一讲 基本内容 为什么要学习数据库系统?什么是数据库?什么是数据库系统?什么是数据库管理系统&#xff1f;本课程学什么以及学到什么程度? 重点难点 一组概念的区分&#xff1a;数据库、数据库系统和数据库管理系统熟悉表 的相关要素及术语熟悉数据库系统的构成(工作…...

深度学习项目十六:根据训练好的权重文件推理图片--YOLO系列

文章目录 根据训练好的权重文件推理图片--YOLO系列一、自己构建YOLOv5推理代码1.1 对数据集进行模型训练1.2 对数据集进行模型推理检测1.3 自己编写推理函数1.3.1 针对单张进行推理1.3.2 针对文件夹下的图片进行推理二、自己构建YOLOv8推理代码2.1 对数据集进行模型训练2.2 对数…...

敏感信息加密操作,让开发的系统更加的安全可靠!!

敏感信息加密操作&#xff0c;让开发的系统更加的安全可靠&#xff01;&#xff01;Jasypt&#xff08;Java Simplified Encryption&#xff09;是一个开源的Java库&#xff0c;用于简化加密操作。https://mp.weixin.qq.com/s/sPBV8Ej46YJsElImodRjAQ...

第四篇:精通Docker构建:Dockerfile的艺术与策略

精通Docker构建&#xff1a;Dockerfile的艺术与策略 1. 开篇&#xff1a;探索Docker的革命 在探讨我们的主题之前&#xff0c;让我们先回顾一下Docker的概念。Docker是一个开源平台&#xff0c;用于自动化应用程序的部署、扩展和管理&#xff0c;这一切都是在轻量级的容器中进…...

Linux下Cmake安装或版本更新

下载Cmake源码 https://cmake.org/download/ 找到对应的版本和类型 放进linux环境解压 编译 安装 tar -vxvf cmake-3.13.0.tar.gz cd cmake-3.13.0 ./bootstrap make make install设置环境变量 vi ~/.bashrc在文件尾加入 export PATH/your_path/cmake-3.13.0/bin:$PAT…...

人工智能体验工程师面试

在面试人工智能体验工程师时,面试官可能会从多个方面来考察候选人的能力和经验。以下是人工智能体验工程师面试题: 基础知识考察: 请简述人工智能、机器学习和深度学习的关系与区别。请解释神经网络的基本原理,以及它在人工智能中的应用。描述一种你熟悉的深度学习模型,并…...

科研——BIBM论文修改和提交

文章目录 引言投递流程Latex翻译流程latex模板使用bib文件正文修改 反馈时间线等待审稿结果 引言 第一轮投递快结束了&#xff0c;这里得加快进度&#xff0c;二十号截至&#xff0c;这里得在截至之前投一下&#xff0c;这里翻译整理一下投递的流程 投递流程 投递链接论文是…...

【bug】配置SpringCloudAlibaba AI的maven依赖问题

问题描述 尝鲜alibaba的ai模块&#xff0c;maven依赖一直报找不到包&#xff0c;报错如下 Unresolved dependency: org.springframework.ai:spring-ai-core:jar:0.8.1原因分析&#xff1a; 由于是按照官方文档配置的&#xff0c;所以检查了很多遍maven配置&#xff0c;加上去…...

人工智能和机器学习的应用日益广泛,在医疗健康领域的具体应用是什么?

人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;在医疗健康领域的应用日益广泛&#xff0c;涵盖了从疾病预测、辅助诊断、药物研发到健康管理等多个方面。以下是一些具体的应用实例和成功案例&#xff1a; 疾病预测与辅助诊断&#xff1a;机器学习算…...

前端:鼠标点击实现高亮特效

一、实现思路 获取鼠标点击位置 通过鼠标点击位置设置高亮裁剪动画 二、效果展示 三、按钮组件代码 <template><buttonclass"blueBut"click"clickHandler":style"{backgroundColor: clickBut ? rgb(31, 67, 117) : rgb(128, 128, 128),…...

【计算机网络体系结构】计算机网络体系结构实验-DNS模拟器实验

一、DNS模拟器实验 拓扑图 1. 服务器ip 2. 服务器填写记录 3. 客户端ip以及连接到DNS服务器 4. ping测试...

400电话单页网站/免费域名解析

Qt拆分窗口可以使用QSplitter&#xff0c;也可以使用比较容易使用布局控件来完成&#xff0c;本文章给出使用QSplitter分割窗口的例子。 QSplitter 继承自QFrame&#xff0c;而QFrame又继承自QWidget&#xff0c;这点很重要。 对于使用QSplitter拆分窗口&#xff1a; 1&#xf…...

vpsputty做网站/北京网站推广营销策划

原本以为这个委托需要两个参数&#xff0c;汗&#xff0c;现在总算是弄清楚正确了&#xff0c;Func<T,TResult>是一个只需要一个参数的委托&#xff0c;其参数类型为T&#xff0c;返回值类型会TResult... 用Lambda写的形式是&#xff1a;&#xff08;T类型对象的参数&am…...

软件定制化开发的知识产权归属/seo推广代运营

在本节中&#xff0c;开始介绍Hyper-V虚拟机的管理&#xff0c;包括虚拟机的创建、在虚拟机中安装操作系统与集成服务&#xff08;相当于Hyper-V虚拟机的驱动&#xff09;、导出与导入虚拟机、差异磁盘等内容。在学习这些内容之前&#xff0c;我们先对Hyper-V进行简单的配置&am…...

企业所得税优惠/网站优化与seo

目录常见消息模型案例示范helloWord案例SpringAMQP配置helloword模型生产者消费者工作队列模型消费者使用注解自动创建队列&#xff0c;有就加入&#xff0c;没有就新建预取机制发布订阅模型案例&#xff1a;FanoutExchange类型交换机创建配置类&#xff0c;声明FanoutExcahnge…...

手机网站特效/seo公司品牌哪家好

1、使用adb 打印log日志并输出的命令行 adb logcat -s ReactNative:V ReactNativeJS:V > E:/ADBLG/log.txt 2、检查电脑是否链接到设备 abd device...

仿站 做网站/美国疫情最新消息

性质和特点 对象与对象之间的成员变量是相互独立的。要想共用数据&#xff0c;则需要使用静态成员和静态方法。只要在类中声明静态成员变量&#xff0c;即使不定义对象&#xff0c;也可以为静态成员变量分配空间&#xff0c;进而可以使用静态成员变量。&#xff08;因为静态成…...