03_Shell变量

【Shell】03_Shell变量

一、环境变量

Linux系统配置文件(全局配置文件和用户个人配置文件)中定义的变量,提供给所有Shell程序使用

1.1、全局环境变量

1.1.1、配置文件位置

/etc/environment

/etc/bashrc(或者/etc/bash.bashrc)

/etc/profile(或者/etc/bash_profile)

/etc/profile.d/xxx.sh

1.1.2、常用全局环境变量
变量名称含义
PATH类似于Windows的Path环境变量
HOME当前用户家目录
SHELL查看当前SHELL解析器
HISTFILE查看history命令 存储目录
LANG查看当前系统语言

在这里插入图片描述

1.2、用户环境变量

1.2.1、配置文件位置

~/.bashrc

/.profile(部分系统为:/.bash_profile)

1.3、查看环境变量

env   查看系统环境变量
set   查看系统环境变量 + 自定义变量 + 函数

还有终端一次性配置,参考博文 https://blog.csdn.net/Holenxr/article/details/137219507

二、自定义变量

2.1、自定义局部变量

定义在一个脚本文件中的变量,只能在这个脚本文件中使用的变量

#!/bin/bash 

var_name=value

2.2、自定义常量

变量设置值后不可以修改的变量,也叫只读常量

#!/bin/bash 

var_name=value

readonly var_name

2.3、自定义全局变量

在当前脚本文件中定义,在当前Shell环境和子Shell环境中都可以使用的变量

2.3.1、父子Shell环境介绍

有两个Shell脚本1.sh和2.sh,如果在1.sh中执行了2.sh,那么1.sh就是父Shell环境,2.sh就是子Shell环境。

2.3.2、语法及示例
#!/bin/bash

#语法1:
var_name=value
export var_name
#语法2:
export var_name=value

实例:在A.sh中定义一个变量VAR,B.sh中打印VAR,在A.sh中执行B.sh。

A.sh
#!/bin/bash

export VAR=123
sh B.sh
B.sh
#!/bin/bash

echo $VAR

2.4、自定义变量的使用

#!/bin/bash

var_name=value

#使用变量
#用法1:
echo $var_name
#用法2:
echo ${var_name}
#区别:花括号方式适合拼接字符串

#删除变量
unset var_name

三、特殊变量

3.1、特殊变量:$n

用于获取脚本文件执行时传入的参数

$0     用于获取当前脚本文件名
$1~$9  用于获取第1个到第9个输入参数
${数字} 用于获取第10个以上输入参数

3.2、特殊变量:$#

用于获取脚本文件执行时参数的个数

3.3、特殊变量:$* 和 $@

获取所有输入参数

#!/bin/bash 

#直接打印时,两个变量是没有区别的,与单双引号无关,都是"$1 $2 ... $n"
echo "$@"
echo $@
echo "$*"
echo $*

在这里插入图片描述

#!/bin/bash 

#循环当中,有双引号是有区别的
for item in "$@"
do
  echo $item
done

for item in "$*"
do
  echo $item
done

在这里插入图片描述

#!/bin/bash 

#循环当中,没有双引号是没有区别的
for item in $@
do
  echo $item
done

for item in $*
do
  echo $item
done

在这里插入图片描述

3.4、特殊变量:$?

用于获取上一个Shell命令的退出状态码,或者是函数返回值

一般0代表执行成功,非0代表执行失败

在这里插入图片描述

3.5、特殊变量:$$

获取当前Shell脚本的进程号

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PTA - sdut-使用函数求a+aa+aaa++⋯+aa.....aaa(n个a)之和

题目描述: 给定两个均不超过9的正整数a和n,要求:编写函数fn(a,n), 求aaaaaa⋯aa⋯aa(n个a)之和,fn须返回的是数列之和。 函数接口定义: def fn(a,n):其中, a 和 n 都是传入的参数…

IEC62056标准体系简介-2.IEC62056标准体系及对象标识系统(OBIS)

1. IEC 62056标准体系 IEC 62056标准体系目前共包括六部分,见图1: 第61部分:对象标识系统第62部分:接口类第53部分:COSEM应用层第46部分:使用HDLC(High Level Data Link Control)协…

39 线程库

目录 thread类的简单介绍线程函数参数锁线程交替打印原子性操作库无锁CAS智能指针的线程安全单例模式的线程安全 1. thread类的简单介绍 在c11之前,涉及到多线程问题,都是和平台相关的,如windows和linux下各有自己的接口,这使得…

【STM32/HAL】嵌入式课程设计:简单的温室环境监测系统|DS18B20 、DHT11

前言 板子上的外设有限,加上想法也很局限,就用几个传感器实现了非常简单的监测,显示和效应也没用太复杂的效果。虽说很简单,但传感器驱动还是琢磨了不久,加上串口线坏了,调试了半天才发现不是代码错了而是…

多标签问题

一、多标签问题与单标签问题的区别: 多标签问题是单标签问题的推广。 举个例子,同时识别图片中的小汽车,公交车,行人时,标签值有三个:小汽车,公交车,行人。 单标签问题仅对一个标签…

网络安全——防御实验

防御实验一 拓扑结构展示: 一、 根据题目,先为办公区做安全策略主要策略有以下几点: 1、书写名称和描述,名称和描述要明确,让除本人以外的人也能理解 2、确定源地址为办公区,目标地址为DMZ区 3、确定时间…

utf8mb4和utf8的不同、若依框架,代码生成器,gitee,前端vue的下载、修复和启动(寻求大佬帮助若依框架三、2.3)

2024.7.9 一、数据库的排序和统一问题。utf8mb4和utf8的不同1.1 发现问题1.2 解决问题-在idea中用sql生成器,生成sql语句,然后在里面修改1.3 utf8和utf8mb4的区别 二、若依前后端框架。代码生成器(还没研究懂,但有三个方案&#x…

2024前端面试真题【JS篇】

DOM DOM:文本对象模型,是HTML和XML文档的编程接口。提供了对文档的结构化的表述,并定义可一种方式可以使从程序中对该结构进行访问,从而改变文档的结构、样式和内容。 DOM操作 创建节点:document.createElement()、do…

ER模型理论和三范式

ER模型理论和三范式 各种关系多对一一对一一对多多对多 三范式理论函数依赖完全函数依赖部分函数依赖传递(间接)函数依赖 第一范式:属性(表字段)不可切割第二范式:不能存在 部分函数依赖(都存在完全函数依赖…

最全windows提权总结(建议收藏)

当以低权用户进去一个陌生的windows机器后,无论是提权还是后续做什么,第一步肯定要尽可能的搜集信息。知己知彼,才百战不殆。 常规信息搜集 systeminfo 查询系统信息hostname 主机名net user 查看用户信息netstat -ano|find "3389&quo…

充电宝哪个牌子公认质量好?哪家充电宝好用?4款口碑好充电宝

在如今这个电子设备不离手的时代,充电宝成为了我们生活中的必备品。然而,面对市场上琳琅满目的充电宝品牌和型号,选择一款质量可靠、性能出色的充电宝并非易事。大家都在问:充电宝哪个牌子公认质量好?哪家充电宝好用&a…

【鸿蒙学习笔记】UIAbility组件概述

官方文档:UIAbility组件 目录标题 UIAbility组件概述 [Q&A] 什么是UIAbility?声明周期UIAbility组件-启动模式UIAbility组件-与UI的数据同步 UIAbility组件概述 [Q&A] 什么是UIAbility? UIAbility组件是一种包含UI界面的应用组件&a…

红酒知识百科:从入门到精通

红酒,这个深邃而迷人的世界,充满了无尽的知识与奥秘。从葡萄的选择、酿造工艺,到品鉴技巧,每一步都蕴藏着深厚的文化底蕴和精细的技艺。今天,就让我们一起踏上这场红酒知识之旅,从入门开始,逐步…

量产工具一一UI系统(四)

目录 前言 一、按钮数据结构抽象 1.ui.h 二、按键处理 1.button.c 2.disp_manager.c 3.disp_manager.h 三、单元测试 1.ui_test.c 2.上机测试 前言 前面我们实现了显示系统框架,输入系统框架和文字系统框架,链接: 量产工具一一显…

docker笔记1

docker笔记1 一、为什么要学docker?二、docker是什么三、docker安装 一、为什么要学docker? 在过去,开发人员编写的代码在不同的环境中运行时常常面临一些问题,例如“在我的机器上可以运行,但在你的机器上却不行”的情况。这种问题部分原因…

如何在 CentOS 上配置本地 YUM 源

引言 CentOS 作为一个流行的企业级 Linux 发行版,依赖 YUM(Yellowdog Updater, Modified)来管理软件包。YUM 源(Repository)是软件包存储和分发的中心,它们通常位于互联网上。然而,在某些情况下…

六、数据可视化—flask框架入门(爬虫及数据可视化)

六、数据可视化—flask框架入门(爬虫及数据可视化) 1,数据可视化简介2,flask(1)创建flask项目(2)开启debug模式(3)通过访问路径传递参数(4&#x…

实时温湿度监测系统:Micropython编码ESP32与DHT22模块的无线数据传输与PC端接收项目

实时温湿度监测系统 前言项目目的项目材料项目步骤模拟ESP32接线连接测试搭建PC端ESP32拷录环境对ESP32进行拷录PC端搭建桌面组件本地数据接收桌面小组件部分 实验总结 前言 人生苦短,我用Python。 由于我在日常工作中经常使用Python,因此在进行该项目…

核密度估计KDE和概率密度函数PDF(深入浅出)

目录 1. 和密度估计(KDE)核密度估计的基本原理核密度估计的公式核密度估计的应用Python中的KDE实现示例代码 结果解释解释结果 总结 2. 概率密度函数(PDF)概率密度函数(PDF)是怎么工作的:用图画…

澳大利亚TikTok直播为什么需要海外直播专线?

近年来,许多卖家为了解决澳大利亚TikTok直播中的卡顿和高延迟问题,纷纷选择使用海外直播专线。这种专线服务是一种高效、低延迟的数据传输解决方案,专为需要高质量网络连接的场合设计。 与公共互联网相比,海外直播专线提供更稳定、…