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

Linux之shell脚本变量

变量是脚本种的一种重要的属性,它可以存储值,这就大大的增加了脚本的灵活性使得脚本的应用更为广泛。

自定义变量

变量名=值(等号两边不能有空格)

在linux内可以定义变量然后用$引用如果要在调用后面加字符之类的则可以使用${变量名}字符

环境变量

系统帮你定义好的变量

例如

USER输出本用户的用户名

UID输出本用户的id号

HOME当前用户家目录

SHELL当前用户解释器

PWD当前位置

PS1一级提示符

PS2二级提示符

PATH存储命令路径

删除变量

将自己定义的临时变量删除掉

  1. unset + 变量名

永久定义变量

/etc/profile文件下定义,针对所有用户

/root/.bash_profile文件下定义针对个人用户

位置变量与与定义变量

脚本在有位置变量后不能直接执行需要在执行命令后面添加参数才可以执行。

[root@XH ~]# vim location.sh
#!/bin/bash
#位置变量
echo $1                           #第一个参数
echo $2                           #第二个参数
#预定义变量
echo $0                           #脚本的名称
echo $*                           #所有参数
echo $#                           #所有参数的个数
echo $$                           #当前进程的进程号
echo $?                           #上一个程序的返回状态码
可以检测上一个指令是否成功,成功为0,不成功为非0
[root@XH ~]# chmod +x location.sh     #添加可执行权限

使用位置变量实现快速创建用户及其密码

[root@XH ~]# vim /opt/user.sh
#!/bin/bash
useradd $1
echo "$2" |passwd --stdin $1 

引号

’‘ “:界定范围,屏蔽某些特殊符号的功能

“” :界定范围

“ `` ”反撇或者$() :将明令的执行输出作为变量

read :以交互式交互式创建自定义变量

例如

#!/bin/bash
read -p please with username:  n   #提示输入名称
useradd $n
stty -echo
read -p please with passworld:  m   #提示输入密码
stty echo
echo $m | passwd --stdin $n

stty -echo:屏蔽回显示

stty -echo:不屏蔽显示

发布全局变量

export + 已经定义的变量(类似于python的全局变量)

变量计算

用于做某种计算
expr

或者可以用$[]$(())表达式

[root@XH ~]# X=1234                       #定义变量X
[root@XH ~]# expr  $X  +  78                #加法
1312
[root@XH ~]# expr  $X  -  78                  #减法
1156
[root@XH ~]# expr  $X  \*  78               #乘法,操作符应添加\转义
96252
[root@XH ~]# expr  $X  /  78                #除法,仅保留整除结果
15
[root@XH ~]# expr  $X  %  78               #求模
64
[root@XH ~]# echo $[X+78]
1312
[root@XH ~]# echo $[X*78]
96252

let计算后会赋值,结果不输出,可以变量自增减

bc计算器:可以计算小数

bc sclae=显示小数点后几位 算式

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【MySQL】一文带你理清<表级锁>(表锁,元数据锁,意向锁)
  • Leetcode 100.101.110.199 二叉树相同/对称/平衡 C++实现
  • MySQL 的半同步模式
  • Python 设置Excel工作表页边距、纸张大小/方向、打印区域、缩放比例
  • 【MySQL】一文带你理清InnoDB引擎的<内部架构>(内存结构,磁盘结构,后台线程)
  • 数字图像处理【15】特征检测——SIFT特征检测
  • C语言中的预处理详解
  • 【迅为RK3568开发板】OpenHarmony学习开发系列教程(第2期 南向基础篇一)
  • JS中Object.prototype.toString方法解读
  • 链表--随机链表复制
  • python爬虫——入门
  • leetcode509:斐波那契数
  • 递归实现组合型枚举
  • 机器学习概述,深度学习,人工智能,无监督学习,有监督学习,增量学习,预处理,回归问题,分类问题
  • Redis篇一:初识Redis
  • Akka系列(七):Actor持久化之Akka persistence
  • axios 和 cookie 的那些事
  • es6(二):字符串的扩展
  • Java超时控制的实现
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • rabbitmq延迟消息示例
  • Terraform入门 - 3. 变更基础设施
  • Vue.js源码(2):初探List Rendering
  • 阿里云Kubernetes容器服务上体验Knative
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 后端_MYSQL
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 浅谈web中前端模板引擎的使用
  • 悄悄地说一个bug
  • 用 Swift 编写面向协议的视图
  • 2017年360最后一道编程题
  • MyCAT水平分库
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ​学习一下,什么是预包装食品?​
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #Z2294. 打印树的直径
  • (day18) leetcode 204.计数质数
  • (Oracle)SQL优化技巧(一):分页查询
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (排序详解之 堆排序)
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)linux 命令大全
  • .net 8 发布了,试下微软最近强推的MAUI
  • .Net Core 笔试1
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .Net Redis的秒杀Dome和异步执行
  • .net(C#)中String.Format如何使用
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型