shell中的变量
变量介绍
变量即变化的量,核心是"变"与"量",变即变化,领即衡量状态。
量:是记录现实世界当中的某种状态
变:指的是记录状态是可以发生变化的
如何使用变量
变量名 赋值符号 变量值
name=zh // shell中定义的变量
name: zh // yaml中定义的变量
1.变量名: 相当于一个门牌号,便于取出变量值,是访问到值的唯一方式
2.赋值符号:将值的内存地址绑定给变量名
3.变量值: 用来表示状态
变量的使用规则:先定义,再通过变量名去引用
定义变量名的规范
变量名的命名规则:
1.变量名只能是字母、数字或下划线的任意组合 (区分大小写)
2.变量不可以使用中文
3.变量名不要使用命令来命名
4.变量不能以数字开头
5.不要使用拼音
1.下划线+纯小写
name_of='xxx'
2.驼峰体
nameOf='xxx'
ageOf='xxx'
3.下划线+纯大写
NAME_OF='xxx'
不好的方式
1.变量名为中文、拼音
2.变量名过长
3.变量名词不达意
变量的分类
系统内置环境变量
env
declare
export
LANG
PATH
PS1
UID
HOST TNAME
PWD
HISTSIZE
HISTFILESIZE
HISTFILE
TMOUT
HISTCONTROL: export HISTCONTROL=ignorespace
PROMPT_COMMAND
mkdir ${hsk}_${jdlw}_${mdlw}
位置变量
符号 |
含义 |
应用 |
$N |
脚本的第N个参数 |
命令传参,传递给脚本,在脚本中使用 |
$0 |
脚本名字 |
脚本使用方法:给出错误体质或者使用帮助 |
$# |
统计脚本参数 |
判断脚本是否传参 |
$* |
获取脚本所有参数 |
将所有参宿当成一个整体,对传递的参数进行判断 |
$@ |
获取脚本所有参宿 |
将每一个参数当成是一个整体,对传递的参数进行判断 |
特殊变量(状态)
$?
特殊命令: false diff
$$
$!
$_
变量的子串
${变量名}
${#变量名}
${变量名:偏移量}
${变量名:偏移量:不创}
${变量名#字符串}
${变量名##字符串}
${变量名%字符串}
${变量名%%字符串}
${变量/匹配内容/替换内容}
${变量名//匹配内容/替换内容}
扩展变量
${变量名:-字符串}
${变量名:=字符串}
${变量名:?字符串}
${变量名:+字符串}
变量的赋值方式
直接赋值 name=zh
间接赋值 ip=`ifconfig eth0|awk 'NR==2'{print $2}`
交互赋值 read -p '请输入内容' 变量名
传参赋值 $1 $2 $3
交互赋值
read
read 选项 变量名
-p
-s
-t
-a
shell中的数据类型
赋值: name='字符串'
取值
$name
age=18
赋值
list=(python java golang shell)
list[0]='aaa'
list[1]='bbb'
list[2]='ccc'
list[3]='ddd'
取值
${list(0)}
${list(1)}
${list(2)}
${list(3)}
循环数组
list=(python java golang shell)
for yuansu in ${list[*]};do
echo $yuansu
done
echo ${#list[*]}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具