2、shell编程之变量
shell的变量的介绍
(1)、Linux shell中的变量分为:系统变量和用户自定义变量
(2)、系统变量:$HOME、$PWD、$SHELL、$USER等
例如:echo $HOME
(3)、显示当前shell中所有的变量:set
set | more
shell 变量的定义
- 基本语法:
(1)、定义变量:变量=值
(2)、撤销变量:unset 变量
(3)、声明静态变量:readonly变量
注意:不能unset
- 入门案例:
(1)、定义变量A
A=100
echo “A=$A”
(2)、撤销变量A
unset A
echo “A=$A”
(3)、声明静态变量B=2,静态变量不能unset
readonly B=2
echo "B=$B"
(4)、可把变量提升为全局环境变量,可供其他shell程序使用
export
变量定义规则
(1)、变量名称可以由字母、数字、下划线组成,但不能以数字开头
(2)、等号两侧不能有空格
(3)、变量名称一般习惯为大写
将命令的返回值赋给变量(重点)
(1)、A=`ls -la ``反引号(esc下面的键),运行里面的命令,并把结果返回给变量A
(2)、A=$(ls -la)等价于反引号(推荐使用)
设置环境变量
- 基本语法:
(1)、export 变量名=变量值(功能描述:将shell变量输出为环境变量)
(2)、source 配置文件 (功能描述:让修改后的配置信息立即生效)
(3)、echo $变量名 (功能描述:查询环境变量的值)
- 入门案例:
(1)、在/etc/profile 文件中定义TOMCAT_HOME环境变量
vim /etc/profile
TOMCAT_HOME=/opt/tomcat
export TOMCAT_HOME
source /etc/profile
shell多行注释::<<! !
(2)、查看环境变量TOMCAT_HOME的值
echo TOMCAT_HOME
(3)、在另外一个shell程序中使用TOMCAT_HOME
vim myshell.sh
echo "TOMCAT_HOME=$ echo TOMCAT_HOME"
注意:在输出JAVA_HOME环境变量前,需要让其生效
source /etc/profile
位置参数变量
- 介绍:
当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置
参数变量,例如:./myshell.sh 100 200,这个就是一个执行shell的命令行,可以再myshell
脚本中获取到参数信息
- 基本语法:
$n(功能描述:n为数字,$0代表命令本身,$1-$9代表第一到到第九个参数,十以上的
参数需要用大括号包含${10})
$*(功能描述:代表命令行中所有的参数,$ *把所有的参数看成一个整体)
$@(功能描述:代表命令行中所有的参数,不过$@把每个参数区分对待)
$#(功能描述:代表命令行中所有参数的个数)
- 实例:
编写一个shell脚本,positionPara.sh,在脚本中获取命令行的各个参数信息
vim positionPara.sh
#!/bin/bash
echo "$0 $1 $2"
echo "$*"
echo"$@"
echo "参数个数=$#"
分配权限:chomd 544 positionPara.sh
./positionPara.sh 30 60
输出效果:
预定义变量
Shell设计者事先已经定义好的变量,可以直接在shell脚本中使用
- 基本语法:
$ $(功能描述:当前进程的进程号(PID))
$!(功能描述:后台运行的最后一个进程的进程号)
$?(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个
命令正确执行;如果这个变量的值为非0,证明上一个命令执行不正确)
- 实例:
在一个shell脚本中简单使用一下预定义变量
vim prePar.sh
#!/bin/bash
echo "当前的进程号=$$"
#后台的方式运行myshell.sh
./myshell.sh &
echo "最后一个进程的进程号=$!"
echo"执行的值=$?"
分配执行权限:chmod 744 prePar.sh
./ prePar.sh
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)