从零学习Linux操作系统第二十七部分 shell脚本中的变量

一、什么是变量

变量的定义

定义本身
变量就是内存一片区域的地址

变量存在的意义
命令无法操作一直变化的目标
用一串固定的字符来表示不固定的目标可以解决此问题

二、变量的类型及命名规范

环境级别
export A=1
在环境关闭后变量失效
在这里插入图片描述

退出后 关闭
在这里插入图片描述

用户级别(永久的设定变量)
vim ~/.bash_profile
export A=1

在这里插入图片描述
source ~/.bash_profile 生效

在这里插入图片描述

系统级别(所有的用户都可以读取到这个变量)
vim /etc/profile
export A=1
vim /etc/profile.d/A.sh
export B=3

在这里插入图片描述
此时用其他用户也可以生效
在这里插入图片描述

变量名称

变量名称可包含的字符
字母
下划线_
数字

变量名称定义规则
不能用数字开头

建议:
变量名称短全用大写字符
变量名称长用_区分子类
WESTOS
Westos_Linux
westoS_Linux

三、变量的转译声明及数组

1)转译

\ #转译单个字符

在这里插入图片描述

有多少个特殊字符就有多少个斜杠

" " #弱引用,批量转译个数字符 不能转译"\ " “” “$” “!”
’ ’ #强引用

2)声明

a=1
echo $ab
echo ${a}b
在这里插入图片描述

3)变量的数组

a=(1 2 3 4 5)
a$[a[@]:起始元素id:元素个数]
echo ${a[0]} ##数组中第一个元素
echo ${a[1]} ##数组中最后一个元素
echo ${a[*]} ##数组中所有元素
echo ${a[@]} ##数组中所有元素
echo ${a[@]:0:3} ##数组中13个元素
echo ${#a[@]} ##数组中元素的个数
unset a[n] ##删除数组中的第n1个元素
unset a ##删除a这个数组
在这里插入图片描述

四、命令别名及用户环境的设定

查看命令的别名
alias
在这里插入图片描述
永久设定命令别名
编辑配置文件
vim ~/.bashrc
在这里插入图片描述
source ~/.bashrc 使之生效

在这里插入图片描述
在这个文件内编辑的只是当前的用户可以使用
若使在全体用户中可以使用则
编辑系统级的配置文件
vim /etc/bashrc
在这里插入图片描述
source /etc/bashrc 使之生效

若要删除这个命令别名
需将系统级和用户级的配置文件中的命令别名删掉
并且执行
unalias xie 删除当前环境中的alias

用户环境变量的更改
用户级:编辑配置文件
vim ~/.bash_profile
在这里插入图片描述
在这里插入图片描述
系统级:编辑配置文件
vim /etc/profile.d/path.sh
在这里插入图片描述

五、变量的高级用法

1)直接利用命令执行结果

$()| ##优先执行
或者··
在这里插入图片描述

2)脚本中的传参

传参:将脚本外部的内容传递给脚本内部

非交互模式:

创建一个脚本
vim westos.sh
在这里插入图片描述

在这里插入图片描述

交互式

编辑一个脚本
vim westos1.sh
在这里插入图片描述
在这里插入图片描述

七、脚本函数

定义:
程序的别名(脚本当中的脚本就叫函数)

先编辑一个脚本
vim westos2.sh
在这里插入图片描述
ACTION 是一个函数
也就是脚本当中的脚本

相当于是给ACTION赋了一个值,而这个值是命令脚本在这里插入图片描述

练习脚本

sh create_user.sh
Please input username: westos
westos exist> westos is exist>Please input username:
westos not existplease input password: 无回显密码
此用户会自动建立并且密码为提示后设定的密码
并显示:westos is created
并再次提示Please input username:
当Please input username:exit
此脚本退出

在这里插入图片描述

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

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

相关文章

《初阶数据结构》尾声

目录 前言: 《快速排序(非递归)》: 《归并排序》: 《归并排序(非递归)》: 《计数排序》: 对于快速排序的优化: 分析: 总结: 前言&#xff1a…

新疆营盘古城及古墓群安防舱体实施方案

3 总体布局 3.1设计原则 3.1.1执行有效的国家标准、国家军用标准和行业标准; 3.1.2满足指标要求; 3.1.3采用通用化、模块化设计,提高设备可维修性; 3.1.4采用人机工程学知识进行设计,充分考虑安全性。 3.2 总体…

51单片机学习(3)-----独立按键控制LED的亮灭状态

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步了。 目录 一. 器件介绍及实验原理 1.独立按键 (1)独…

外包干了3个月,技术退步明显

先说一下自己的情况,本科生,19年通过校招进入广州某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

Linux之用户和用户组的深入了解

目录 一、简介 1.1、用户: 1.2、用户组 1.3、UID和GID 1.3、用户账户分类 查看用户类别 超级用户root(0) 程序用户(1~499) 普通用户(500~65535) 二、用户 2.1、添加新的用户账号:useradd 2.2、删除账号:userdel 有-r与没有-r区别…

运维07:堡垒机

什么是跳板机 跳板机就是一台服务器而已,运维人员在使用管理服务器的时候,必须先连接上跳板机,然后才能去操控内网中的服务器,才能登录到目标设备上进行维护和操作 开发小张 ---> 登录跳板机 ---> 再登录开发服务器 测试…

贷齐乐系统最新版SQL注入(无需登录绕过WAF可union select跨表查询)

一、环境 已上传资源(daiqile) 二、代码解释 1.1Request 不管get请求还是post请求都可以接收到 1.2过滤的还挺多 1.3第二个WAF把数据分为两个了一个Key一个value,全是explode的功劳 1.4submit是if进入的前提 很明显走进来了 1.5那我们在这…

学习JAVA的第三天(基础)

目录 流程控制语句 顺序结构 分支结构 循环结构 分类: 练习 跳转控制语句 练习 数组 数组介绍 数组的定义和静态初始化 数组定义 数组的静态初始化 数组元素访问 数组遍历 数组动态初始化 JAVA内存分配 流程控制语句 顺序结构 是Java程序默认的执行流程…

UIKit 在 UICollectionView 中拖放交换 Cell 视图的极简实现

概览 UIKit 中的 UICollectionView 视图是我们显示多列集合数据的不二选择,而丰富多彩的交互操作更是我们选择 UICollectionView 视图的另一个重要原因。 如上图所示:我们实现了在 UICollectionView 中拖放交换任意两个 Cell 子视图的功能,这…

Zabbix 远程监控主机

目录 1、安装 Zabbix 安装客户端 服务端测试通讯 Web页面添加主机 2、监控 Nginx 自定义脚本监控 Nginx web配置台 3、监控 MySQL 配置模版文件 配置Web界面 1、安装 Zabbix node-12 作为zabbix的被监控端,提供mysql服务器,配置zabbix监控node…

jquery写组件滑动人机验证组件

jquery组件,虽然 jquery 语法古老,但是写好了用起来真的很爽啊,本文用滑动人机验证给大家做个详细教程(直接复制代码就可以用噢o(* ̄▽ ̄*)ブ) 第一步 先看下组件本身 component.js (function() {…

Nginx网络服务三-----(三方模块和内置变量)

1.验证模块 需要输入用户名和密码 我们要用htpasswd这个命令,先安装一下httpd 生成文件和用户 修改文件 访问页面 为什么找不到页面? 对应的路径下,没有这个文件 去创建文件 去虚拟机浏览器查看 有的页面不想被别人看到,可以做…

【UI自动化】使用poco框架进行元素唯一定位

直接选择: 1.poco(text买入).click() 2.poco("android.widget.ImageView").click()相对选择、空间选择: 3.poco(text/name).parent().child()[0].click()正则表达式: 4.listpoco(textMatches".*ETF")今天主要想记录下…

centos 系统盘 放到 win pc 中的异常解决

有一块 2.5 480g sata ssd,之前是笔记本电脑的centos系统盘,后来没用了,打算挂到台式机上当下载盘。台式机pc的主板是华硕 h610m-a。 难点一: 因为台式pc上已经挂了两块3.5 hdd,发现sata的电源线都在3.5hdd附近&#…

利用RBI(Remote Browser Isolation)技术访问ChatGPT

系统组网图 #mermaid-svg-Bza2puvd8MudMbqR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Bza2puvd8MudMbqR .error-icon{fill:#552222;}#mermaid-svg-Bza2puvd8MudMbqR .error-text{fill:#552222;stroke:#552222;…

300分钟吃透分布式缓存-10讲:MC是怎么定位key的?

我们在进行 Mc 架构剖析时,除了学习 Mc 的系统架构、网络模型、状态机外,还对 Mc 的 slab 分配、Hashtable、LRU 有了简单的了解。本节课,将进一步深入学习这些知识点。 接下来,进入 Memcached 进阶的学习。会讲解 Mc 是如何进行…

QT应用软件【协议篇】周立功CAN接口卡代码示例

文章目录 USBCAN系列CAN接口卡规格参数资料下载QT引用周立功的库安装sdk代码USBCAN系列CAN接口卡 USBCAN系列CAN接口卡兼容USB2.0全速规范,可支持1/2/4/8路CAN接口。采用该接口卡,PC机可通过USB连入CAN网络,进行CAN总线数据采集和处理,主要具备以下几大优势特点: 支持车载…

正交匹配追踪(Orthogonal Matching Pursuit, OMP)的MATLAB实现

压缩感知(Compressed Sensing, CS)是一种利用稀疏信号的先验知识,用远少于奈奎斯特采样定理要求的样本数目恢复整个信号的技术。正交匹配追踪(Orthogonal Matching Pursuit, OMP)是一种常见的贪婪算法(Gree…

在苹果电脑MAC上安装Windows10(双系统安装的详细图文步骤教程)

在苹果电脑MAC上安装Windows10(双系统安装的详细图文步骤教程) 一、准备工作准备项1:U盘作为系统安装盘准备项2:您需要安装的系统镜像 二、启动转换助理步骤1:找到启动转换助理步骤2:启动转换助理步骤3&…

波奇学Linux:进程通信管道

进程通信 管道:基于文件级别的单向通信 创建父子进程,使得进程的struct file*fd_array[]的文件描述符指向同一个struct file文件,这个文件是内存级文件。 父进程关写端,子进程再关闭读端。实现单向通信 子进程写入,父进…