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]}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具