变量 基础
变量类型:
内置变量,如:PS1,PATH,UID,HOSTNAME,$$,BASHPID,PPID,$?,HISTSIZE
用户自定义变量
不同的变量存放的数据不同,决定了以下
1. 数据存储方式
2. 参与的运算
3. 表示的数据范围
变量数据类型:
字符
数值:整型、浮点型,bash 不支持浮点数
Shell中变量命名法则
1.不能使程序中的保留字:如:if, for
2.只能使用数字、字母及下划线,且不能以数字开头,注意:不支持短横线 “ - ”,和主机名相反
3.见名知义,用英文单词命名,并体现出实际作用,不要用简写,如:ATM
4.统一命名规则:驼峰命名法, studentname,大驼峰StudentName 小驼峰studentName
5.变量名大写:STUDENT_NAME
6.局部变量小写
7.函数名小写
变量定义和引用
变量的生效范围等标准划分变量类型
1.普通变量:生效范围为当前shell进程;对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效
2.环境变量:生效范围为当前shell进程及其子进程
3.本地变量:生效范围为当前shell进程中某代码片断,通常指函数
变量赋值:
name='value'
value 可以是以下多种形式
直接字串:name='root'
变量引用:name="$USER"
命令引用:name=`COMMAND` 或者 name=$(COMMAND)
注意:变量赋值是临时生效,当退出终端后,变量会自动删除,无法持久保存,脚本中的变量会随着脚
本结束,也会自动删除
变量引用:
$name
${name} #加{}可以将变量和_区分开来 $name_ 代表的是name_ 这个变量 ${name}_ 代表的是name变量后面加一个_
弱引用和强引用
"$name " 弱引用,其中的变量引用会被替换为变量值
'$name ' 强引用,其中的变量引用不会被替换为变量值,而保持原字符串
环境变量:
可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量
一旦子进程修改从父进程继承的变量,将会新的值传递给孙子进程
一般只在系统配置文件中使用,在脚本中较少使用
变量声明和赋值:
#声明并赋值
export name=VALUE
declare -x name=VALUE
#或者分两步实现
name=VALUE
export name
显示所有环境变量
env
printenv
export
declare -x
删除变量
unset name
bash内建的环境变量
PATH
SHELL
USER
UID
HOME
PWD
SHLVL #shell的嵌套层数,即深度
LANG
MAIL
HOSTNAME
HISTSIZE
_ #下划线 表示前一命令的最后一个参数
只读变量
只能声明定义,但后续不能修改和删除,即常量
声明只读变量
readonly name
declare -r name
查看只读变量
readonly [-p]
declare -r
本文来自博客园,作者:运维笔记123,转载请注明原文链接:https://www.cnblogs.com/qiuyq/p/15960450.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现