shell 02(shell变量)

news2024/11/25 16:01:42

一、shell变量

变量用于存储管理临时的数据, 这些数据都是在运行内存中的。

1.1 变量类型

1.1.1 系统环境变量

  • 是系统提供的共享变量.
  • 是linux系统加载Shell的配置文件中定义的变量共享给所有的Shell程序使用

shell的配置文件分类

  • 全局配置文件

/etc/profile
/etc/profile.d/*sh

/etc/bashrc

  • 个人配置文件

当前用户 /.bash_profile

当前用户/.bashrc


一般情况下,我们都是直接针对全局配置进行操作.

1.1.1.1 环境变量分类

在Linux系统中,环境变量按照其作用范围不同大致可以分为系统级环境变量用户级环境变量

  • 系统级环境变量: Shell环境加载全局配置文件中的变量共享给所有用户所有Shel程序使用,全局共享
  • 用户级环境变量: shell环境加载个人配置文件中的变量共享给当前用户的Shell程序使用,登录用户使用

1.1.1.2 查看系统环境变量

env    

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

1.1.1.3 常用系统环境变量

echo $PATH


1.1.2 自定义变量

1.1.2.1 自定义局部变量

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

语法:var_name=value

  • 1.变量名称可以有字母,数字和下划线组成,但是不能以数字开头
  • 2.等号两侧不能有空格
  • 3.在bash环境中,变量的默认类型都是字符串类型,无法直接进行数值运算
  • 4.变量的值如果有空格,必须使用双引号括起来
  • 5.不能使用Shell的关键字作为变量名称

查询变量值语法:

echo $var_name //直接使用变量名

echo ${var_name}  //花括号

花括号方式适合拼接字符串

 

增删改查

删除变量语法:

unset var_name 


1.1.2.2 自定义常量

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

语法:readonly var_name 


1.1.2.3 自定义全局变量

就是在当前脚本文件中定义全局变量,这个全局变量可以在当前Shel环境与子Shell环境中都可以使用

父子shellI环境介绍
例如: 有2个shell脚本文件 A.sh 和 B.sh
如果在A.sh脚本文件中执行了B.sh脚本文件,那么Ash就是父Shell环境, B.sh就是子shell环境

语法:export  var_name1 var_name2


1.1.3 特殊符号变量

1.1.3.1 $n

  • $n用于接收脚本文件执行时传入的参数
  • $1~$9,代表获取第一输入参数到第9个输入参数
  • 第10个参数以上获取参数的格式: ${数字},否则无法获取
  • $0 获取当前shell脚本文件名字

执行脚本文件传入参数语法:

sh 脚本文件   传入参数1  传入参数2 ...

#!/bin/bash

#命令1: 打印当前脚本文件名宁
echo "当前脚本文件名称:$O"

命令2: 打印第1个输入参数
echo "第一个输入参数:$1"

命令3: 打印第2个输入参数
echo "第二个输入参数:$2"

命令4:打印第10个输入参数
echo "第十个输入参数不带花括号获取:$10"
echo "第十个输入参数带花括号获取:${10}"

1.1.3.2 $#

  • $#获取所有输入参数的个数

1.1.3.3 $*  $@

$*  $@都是获取所有输入参数,用于以后输出所有参数

  • 不使用双引号,则功能是一样的     

 $*  $@都是获取所有输入参数,格式为: $1 $2 ... $n 

  • 使用双引号,则 

"$*"获取所有参数拼接为一个字符串,格式为:"$1 $2 ... $n"

"$@"获取一组参数列表对象,格式为:"$1" $2" ... "$n"

 

shell中的循环语法:

for var in 列表变量
do   #循环开始
   命令  #循环体

done #循环结束

在vim编辑界面复制命令,esc退出编辑模式,输入5yy,则复制光标所在行及其下面共计5行

按p就输出了

 

代码:

echo "参数一:$0"

echo "参数二:$1"

echo "参数三:$2"

echo "参数十一:$11"
echo "参数十一:${11}"

echo "输入所有参数的总数:$#"
echo '使用$*:'$*
echo '使用${*}:'${*}

echo '使用$@: '$@
echo '使用${@}:'${@}

echo '循环遍历$*所有参数:'
for num in "$*"
do
        echo $num
done

echo '循环遍历$@所有参数:'
for num in "$@"
do
        echo $num
done

执行sh test_darren.sh 1 2 3 4 5 6 7 8  9 10 11输出:

(base) w@w-System-Product-Name:~$ sh test_darren.sh 1 2 3 4 5 6 7 8  9 10 11
参数一:test_darren.sh
参数二:1
参数三:2
参数十一:11
参数十一:11
输入所有参数的总数:11
使用$*:1 2 3 4 5 6 7 8 9 10 11
使用${*}:1 2 3 4 5 6 7 8 9 10 11
使用$@: 1 2 3 4 5 6 7 8 9 10 11
使用${@}:1 2 3 4 5 6 7 8 9 10 11
循环遍历$*所有参数:
1 2 3 4 5 6 7 8 9 10 11
循环遍历$@所有参数:
1
2
3
4
5
6
7
8
9
10
11

可以看出循环遍历的时候,

"$*" 直接输出

"$@"一个个输出

1.1.3.4 $?

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

  • 每个shell命令的执行都有一个返回值,这个返回值用于说明命令执行是否成功
  • 一般来说,返回0代表命令执行成功,非0代表执行失败

1.1.3.5 $$

用于获取当前ShelI环境的进程ID号

查看当前shell环境进程编号

ps -aux|grep bash 

注意:

echo "Value is $VAR"    #输出 "Value is" 后接变量的值

echo 'Value is $VAR'    #输出字面字符串 "Value is $VAR"

  • 在双引号内,可以进行变量替换,即将变量的值插入到字符串中。例如,如果 $VAR 是一个变量,echo "Value is $VAR" 会输出 "Value is" 后接变量的值。
  • 在单引号内,变量不会被替换为它们的值。echo 'Value is $VAR' 会输出字面字符串 "Value is $VAR"。

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

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

相关文章

外贸独立站怎么做内容营销?外贸独立站内容营销的步骤e6zzseo

在如今全球化的商业环境下,外贸独立站已成为吸引国际客户、拓展市场份额的重要工具。然而,仅仅拥有一个外贸独立站还不足以保证成功,内容营销在其中扮演着至关重要的角色。本文将介绍如何在外贸独立站上实施内容营销,以及实现有效…

交换的综合实验

目录 ​编辑 一,交换层面的配置 1.channel 2.vlan 3.trunk 二,配置路由 R1 R2 LW1 LW2 三,OSPF 四,能够访问外网操作 一,交换层面的配置 配置顺序 channel vlan trunk stp svi vrrp dhcp 1.channel LW…

用了好几年的IDEA主题及配置,拿去吧不谢。

前言 最近这几年一直用一套IDEA的主题及配置,分享给各位,如果符合你的口味,可以下载了玩玩。 我个人是非常喜欢的,不管是观感还是敲代码都很爽的。 附上一张代码的主题色,大概就是这样子,我个人喜欢清爽的白…

防火墙+路由模式部署

一、防火墙 防火墙最主要功能是提供访问控制能力 防火墙默认管理口为ge0/0(部分型号有专门的MGT口),管理地址为https://192.168.1.250,默认管理口只开启了https和ping。登录防火墙串口,波特率为9600,默认…

Anaconda常用指令

导语 Python是现今较为流行的一门编程语言,解释性强,语法灵活,而且具有强大的函数库,这些函数全部都被封装成一个个的模块(Module),也称作包,所以我们在使用的时候需要进行导入(import),但是所有…

【数据结构】实现带头双向循环链表

目录 前言:一、介绍带头双向循环链表1.带头双向循环链表的结构2.带头双向循环链表的功能 二、实现带头双向循环链表1.创建节点的结构2.函数的声明2.函数的实现(1)创建一个新节点(2)初始化哨兵位(带头&#…

wx原生微信小程序入门常用总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、定义值和修改值1、定义值2、修改值(1)代码(2)代码说明(3)注意点 二、点击事件三、微…

油耳朵适合戴什么类型耳机好,适合油耳的无线耳机推荐

传说中的骨传导耳机,相信大家都不陌生吧!近年来,这种耳机以其不需要插入耳朵、不会堵塞耳道的特点,在耳机圈内迅速崛起。然而,还有一些人对骨传导耳机望而却步,不知道如何选择适合自己的产品。作为一位骨传…

信息管理系统三级等保的一些要求

一、前言 在做一些互联网系统或面向互联网的系统时,需要进行备案,需要满足网络信息安全维护规章及有关规章制度要求,才能发布到互联网。所以在做系统的需求分析时,往往需要把信息管理系统三级等保的需求加上,方便开发…

Effective C++条款09——绝不在构造和析构过程中调用virtual 函数(构造/析构/赋值运算)

本条款开始前我要先阐述重点:你不该在构造函数和析构函数期间调用virtual函数,因为这样的调用不会带来你预想的结果,就算有你也不会高兴。如果你同时也是一位Java或C#程序员,请更加注意本条款,因为这是CH与它们不相同的一个地方。…

斗鱼财报盈利的背后:左手艳舞、右手擦边

本月14日,直播平台斗鱼发布了其第二季度财报,面对“看起来还不错的数据”,其对外着重强调了“连续两个季度实现盈利”,并称“斗鱼收入结构持续优化”“斗鱼盈利能力提升”“斗鱼稳健增长可期”“督导提升了内容审核能力”。 财报…

【C++STL基础入门】深入浅出string类查找字串、返回字串和交换操作

文章目录 前言一、查找字串二、返回字串三、交换字串四、运算符重载总结 前言 本STL使用VS2022C20版本 C标准库(Standard Template Library,简称STL)是C中非常强大和常用的一组容器、算法和函数模板,它能大大简化程序开发和提高…

MySQL高级篇——MySQL架构篇2(MySQL的数据目录)

目录 1 MySQL8的主要目录结构1.1 数据库文件的存放路径1.2 相关命令目录1.3 配置文件目录 2 数据库和文件系统的关系2.1 查看默认数据库2.2 数据库在文件系统中的表示2.3.1 InnoDB存储引擎模式2.3.2 MyISAM存储引擎模式 2.4 总结2.5 视图在文件系统中的表示2.6 其他的文件 1 My…

【Linux】vim编辑器

这一趴我们要学习vim编辑器,知道vim是什么、掌握它的3种模式以及学会其常见操作。 目录 Ⅰ. 引入 Ⅱ. 什么是vim? Ⅲ. 3种模式 Ⅳ. 常见操作 命令模式下 复制粘贴组 撤销组 光标定位组 光标移动组 剪切组 切换、替换组 删除组 底行模式下 …

AI+游戏线下沙龙活动暨COC上海城市开发者社区8月活动

引言 近年来,随着人工智能技术的不断发展和游戏开发技术的不断更新,越来越多的游戏公司开始将人工智能技术应用于游戏领域,以提高开发效率、降低成本,实现游戏玩家更好的游戏体验。为了探讨AI游戏的技术实践经验,近日在…

Spring Cloud Alibaba笔记

😀😀😀创作不易,各位看官点赞收藏. 文章目录 Spring Cloud Alibaba 笔记1、Nacos 服务注册和配置中心1.1、Nacos 之下载启动1.2、Nacos 之注册中心1.3、Nacos 之服务发现1.4、Nacos 之配置中心1.5、Nacos 之分类配置1.6、Nacos 之…

【OpenGauss源码学习 —— 执行算子(Result 算子)】

执行算子(Result 算子) 控制算子Result 算子ExecInitResult 函数ResultState 结构体ExecInitResultTupleSlot 函数ExecAllocTableSlot函数 ExecResult 函数TupleTableSlot 结构体ExecProcNode 函数ExecProcNodeByType 函数ExecProject 函数 ExecEndResul…

docker版jxTMS使用指南:使用jxTMS提供数据

本文讲解了如何jxTMS的数据访问框架,整个系列的文章请查看:docker版jxTMS使用指南:4.4版升级内容 docker版本的使用,请查看:docker版jxTMS使用指南 4.0版jxTMS的说明,请查看:4.0版升级内容 4…

韶音的骨传导耳机怎么样,韶音骨传导耳机是真的骨传导吗

韶音骨传导耳机最为受瞩目的是OpenRun Pro,在发声单元位置上采用了开孔的处理,佩戴上耳的时候发声单元可以贴合耳道,在低频延伸性,但在中高频的时候整体会出现震感,纤细的耳挂在佩戴的时候是有着不错的舒适度的&#x…

Java SpringBoot+Vue 的班级综合测评管理系统的设计与实现(2.0 版本)

文章目录 1. 简介2. 技术栈 3. 需求分析用户需求分析功能需求分析系统性能需求分析 4系统总体设计与实现4.1总体设计 5 系统功能的详细设计与实现5.1 管理员功能模块5.2学生功能模块5.3教师功能模块 源码下载地址 1. 简介 传统的班级综合测评管理系统,一开始都是手工…