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

【学习笔记】Shell编程--Bash变量

变量类型说明
环境变量

与Shell的执行环境相关的一些变量。如PATH,HOME等,用户可重新定义。

一、环境变量的创建:export, export ABCD=2

二、环境变量的查看

使用echo命令查看单个环境变量。如: echo $PATH

使用printenv查看所有环境变量。

预定义变量用户不能修改,只能引用的变量。由“$”+其他符号组成。
位置变量在执行脚本时,传入到脚本中对应脚本位置的变量
标准变量也是环境变量,在bash环境建立时生成。可使用printenv命令查看。
自定义变量变量名=变量值(变量名前不需加$, 等号两边不能有空格)

以下表格是对预定义变量的一些说明

预定义变量说明
$#传递到脚本或函数的参数数量
$*传递到脚本或函数的全部参数
$?前一个命令执行情况,返回0表示成功,其他值表示失败
$$当前进程的ID(PID)
$!后台运行的最后一个进程的进程ID(PID)
$0当前脚本的名称
$@类似$*,但是"$*" 把所有参数合并成一个字符串,而 "$@" 会得到一个字符串参数数组。

Bash变量基本概念

  • 变量:用一个固定的字符串代表可能发生变化的内容
  • 包含变量名和变量值两个要素
  • 变量可以简化Shell脚本的编写,使Shell脚本更简洁也更易维护
  • 变量为进程间共享数据提供了一种新的手段

var1=/home/csu/Desktop/f1。其中var1是变量名, /home/csu/Desktop/f1是变量var1对应的值

读取变量值

两种形式:$varable_name  或 ${variable_name}

使用echo命令试验

[root@localhost 桌面]# echo $SHELL
/bin/bash
[root@localhost 桌面]# echo ${SHELL}
/bin/bash

设置变量值

使用变量之前需要先定义一个变量并且设置变量的值 

用 “=”连接变量名和变量值,如 var_name=var_value

[root@localhost 桌面]# echo $myname#输出为空,因为myname变量未定义
[root@localhost 桌面]# myname=/home/csu/Desktop
[root@localhost 桌面]# echo $myname
/home/csu/Desktop              #定义后输出变量值
[root@localhost 桌面]# myname=/home/csu/Desktop/f1      #修改变量值
[root@localhost 桌面]# echo $myname
/home/csu/Desktop/f1           

给变量追加内容,可以使用“$var_name”new或${var_name}new

[root@localhost 桌面]# myname="$myname"new1
[root@localhost 桌面]# echo $myname
/home/csu/Desktop/f1new1
[root@localhost 桌面]# myname=${myname}new2
[root@localhost 桌面]# echo $myname
/home/csu/Desktop/f1new1new2

用命令的执行结果为变量赋值可以用:`命令`或&(命令)

[root@localhost 桌面]# curdate=`date`     #使用反单引号获取命令执行结果
[root@localhost 桌面]# echo $curdate
2025年 04月 30日 星期三 12:06:05 CST
[root@localhost 桌面]# curdate=$(date)    #使用小括号获取命令执行结果
[root@localhost 桌面]# echo $curdate
2025年 04月 30日 星期三 12:06:28 CST

read命令

在交互式脚本中用read命令从键盘输入设置变量值

[root@localhost 桌面]# read fname
/home/csu 
[root@localhost 桌面]# echo $fname
/home/csu

还可以用read -p 设置输入提示语,根据提示来输入

[root@localhost 桌面]# read -p "Your last name is:" lastname
Your last name is:Bubble 
[root@localhost 桌面]# echo $lastname
Bubble

read的作用就相当于Python的input用法,

read -p "Your last name is :" lastname 可以理解成

lastname=input("Your last name is:")

declare命令

使用declare命令可以修改变量的数据类型

declare命令仅支持整数的数值运算

[root@localhost 桌面]# declare -i var=3*7     #将变量var声明为整数类型
[root@localhost 桌面]# echo $var
21
[root@localhost 桌面]# var=8/5         #取整
[root@localhost 桌面]# echo $var
1
[root@localhost 桌面]# var=2.5         #赋值为浮点数
bash: 2.5: 语法错误: 无效的算术运算符 (错误符号是 ".5")     #会出现报错

unset命令

要取消或者删除已定义的变量可以用unset,在unset命令后面跟上变量名即可

env和export命令

可以使用这两个命令来查看系统当前的环境变量

(以上仅截取部分内容)

变量的作用范围

  • 打开一个Bash窗口就在操作系统中创建了一个Bash进程
  • 在Bash窗口中执行的命令也都是进程(子进程)
  • 子进程运行时,父进程一般处于“睡眠”状态
  • 子进程执行完毕,父进程重新开始运行
  • 默认情况下子进程不会继承父进程定义的变量
[root@localhost 桌面]# p_var="variable in parent process"    #父进程定义的变量
[root@localhost 桌面]# bash             #用bash命令创建子进程
[root@localhost 桌面]# echo $p_var        #这里是子进程的工作界面<==echo $p_var 的值是空,因为子进程没有p_var这个变量
[root@localhost 桌面]# exit    #退出子进程
exit
[root@localhost 桌面]# echo $p_var   #返回到父进程的工作界面,可以得到p_var变量的值
variable in parent process
[root@localhost 桌面]# 

 怎么让子进程继承父进程定义的变量,可以用"export"命令

  • 使用export命令使子进程继承父进程的变量
  • export命令是单向的
  • 在新打开的Bash窗口中无法共享变量

用法示例如下: 

 

关于bash变量就介绍到这里噜 ,期待下篇  886~

http://www.xdnf.cn/news/3174.html

相关文章:

  • HBuider中Uniapp去除顶部导航栏-小程序、H5、APP适用
  • 线上婚恋相亲小程序源码介绍
  • Learning vtkjs之ImageMarchingSquares
  • 国内免费连接claude-3-7大模型操作教程
  • 数据库系统综合应用与深度实践指南
  • VINS-FUSION:配置参数说明与配置自己的参数
  • 【XR】MR芯片 和 VR芯片之争
  • Linux:文件操作
  • FEKO许可配置
  • C++负载均衡远程调用学习之Reactor事件触发机制
  • Python3(19)数据结构
  • 第 11 届蓝桥杯 C++ 青少组中 / 高级组省赛 2020 年真题
  • 涨薪技术|0到1学会性能测试第43课-apache status模块监控
  • halcon关闭图形窗口
  • 论文阅读:2024 ICML In-Context Unlearning: Language Models as Few-Shot Unlearners
  • Flink之DataStream
  • URP - 公告牌的效果实现
  • Keysight万用表使用指南及基于Python采集数据生成Excel文件
  • Solon Cloud Gateway 补充
  • 配置 Odoo 的 PostgreSQL 数据库以允许远程访问的步骤
  • 远程深度学习新环境配置流程
  • 力扣-数组-41缺失的第一个正数
  • PDM协议---音频数据接收
  • 「动态规划」线性DP:最长上升子序列(LIS)|编辑距离 / LeetCode 300|72(C++)
  • 浅谈C# record关键字
  • CSS:选择器-基本选择器
  • linux联接服务器SSH-局域网内网穿透分享
  • VR 汽车线束培训:探索高效学习新路径​
  • 线性微分方程与非线性微分方程
  • 工业控制「混合架构」PK大战 —— 神经网络 + MPC vs 模糊 PID+MPC 的场景选型与实战指南