shell中的变量

shell中的变量

变量介绍

变量:可以变化的量,用于描述事物的变化状态。
# 变:记录的状态是可以发生变化的
# 量:记录在现实世界当中的某个状态

变量的语法

1.变量名:相当于一个门牌号,是访问到值的唯一方法
2.赋值符号:将值的内存地址绑定给变量名
3.变量值:用来表示状态
# 变量的使用规则:先定义,在通过变量名去引用

定义变量名的规范

1.变量名的命名要能够反映出值记录的状态
2.变量名只能是字母、数字或下划线的任意组合
3.变量名不可以使用中文
4.变量名不能以数字开头
5.变量名最好是不要用拼音
6.变量名最好不要定义太长

变量名定义的方式

1.下划线+纯小写
	user_name
2.驼峰体
	UserName
3.下划线+纯大写
	USER_NAME

变量的分类

系统内置环境变量

# 查看系统环境变量的命令
	1.env
	2.declare
	3.export
# 环境变量
LANG:字符集语言
PATH:该变量中的路径里的所有可执行的文件都可以直接执行,不需要加路径
PS1:命令提示符
UID:当前登录用户的uid
HOSTNAME:当前主机名
PWD:当前工作路径
USER:当前登录的用户名
# 历史记录相关
HISTSIZE:历史命令保存记录的条数
HISTFILESIZE:历史命令保存到隐藏文件中记录的条数
HISTFILE:历史命令保存到的隐藏文件的路径
TMOUT:终端一段时间不操作后断开连接的超时时间
HISTCONTROL: export HISTCONTROL=ignorespace 在命令前名加空格就会使此条命令不计入历史命令中
PROMPT_COMMAND:每次输出时都会出现记录的值,一般用作跳板机

位置变量

符号 含义
$N(N为正整数) 脚本的N个参数
$0 执行脚本的路径与名字
$# 统计传递参数的个数
$* 接收脚本后面所有的参数
$@ 接收脚本后面所有的参数

状态变量

符号 含义
$? 上一条命令的返回值
$$ 当前脚本执行的pid
$! 上一个脚本或者程序运行的pid
$_ 获取上一条命令的最后一个参数(以空格为分割符)

变量的子串

语法 含义
$ 获取变量值的长度
$ 调用变量
$ 字符串的截取
$ 字符串的截取(步长为几显示的数就为几)
$ 从变量值的开头,删除第一个匹配到的字符串到开头之间所有的东西
$ 从变量值的开头,删除所有匹配到的字符串到开头之间所有的东西
$ 从变量值的结尾,删除第一个匹配到的字符串到结尾之间所有的东西
$ 从变量值的结尾,删除所有匹配到的字符串到结尾之间所有的东西
$ 将匹配到的第一个匹配内容替换成替换内容
$ 将所有的匹配内容替换成替换内容

扩展变量

语法 作用
$ 如果变量名没有被赋值或它的值为空,那么后面的字符串就会作为默认值,但不会赋值给变量名
$ 如果变量名没有被赋值或它的值为空,那么后面的字符串就会作为默认值赋值给变量名
$ 如果变量名没有被赋值或它的值为空,那么就以?后面的字符串为报错信息输出
$ 如果变量名已经被赋值,那么后面的字符串会替换掉之前的变量的值

变量的赋值方式

1.直接赋值
	name=xxx
2.间接赋值
	name=`echo $HOSTNAME`
3.交互赋值
	read -p 'xxx' 变量名
4.传参赋值

交互赋值

read: 
	语法: 
		read [选项] 变量名
	选项: 
		-p:在输入前打印提示信息
		-s:不显示输入的内容
		-t:设置超时时间
		-a:将后面所有的结果放入数组

shell中的数据类型

# 字符串类型
赋值: 
	name='字符串'
取值: 
	$name
# 整型
赋值: 
 	age=111
取值:
 	$age
# 数组类型
赋值: 
	list=(python shell java)
	或
	list[0]='python'
	list[1]='shell'
	list[2]='java'
取值: 
	${list[0]}
	${list[1]}
	${list[2]}
# echo ${#list[*]}  获取数组中元素的个数
posted on   jilei  阅读(77)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示