shell变量定义与数组-1
1、查看系统所有shell和默认shell
查看系统所有的shell:
cat /etc/shells
查看系统默认shell:
echo $SHELL
2、第一个shell脚本,打印字符串Hello World
新建文件1.sh,在1.sh中输入代码:
1 #!/bin/sh 2 echo "Hello World"
第一行#!告诉脚本要用什么解释器来执行,/bin/sh是解释器的路径。
第二行echo命令表示向标准输出文件(一般是指显示器)输出文件,""包裹的表示字符串。
3、执行shell脚本
a、
1 #进入脚本所在路径 2 #给脚本赋予可执行权限 3 chmod +x 1.sh 4 #执行脚本 5 ./1.sh
b、
#无需在脚本第一行指定解释器信息
1 /bin/sh 1.sh
c、
1 source 1.sh 2 #source可以简写成. 3 4 #source 1.sh等价于 5 . 1.sh 6 7 #执行当前目录下的1.sh 8 . ./1.sh
4、shell变量
在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。
定义变量的三种方式:
1 var_name=value1 2 var_name3='value2' 3 var_name3="value3" 4 #=两边不能有空格
shell变量命名规范:
- 变量名由数字、字母、下划线组成;
- 必须以字母或者下划线开头;
- 不能使用 Shell 里的关键字(通过 help 命令可以查看保留关键字)。
定义变量举例:
1 name="Stephen Wang" 2 job="JAVA Dev" 3 company="ZTE" 4 5 echo ${name}
单引号和双引号的区别:
使用单引号包裹变量时{}里面的内容会原样输出;双引号包含变量时会先解析变量。例子如下:
1 #!/bin/sh 2 name="Vicent" 3 info='My name is ${name}' 4 echo ${info}#My name is ${name}
5 info="My name is ${name}" 6 echo ${info}#My name is Bob
引用变量:
1 #引用变量在变量名称前面加上$即可 2 ${name} 3 $name
1 变量外面{}是可选的,作用是为了识别边界,应用举例 2 name="Bob" 3 echo "My name is ${name}what is your name?"
建议引用变量时都加上{}
修改变量值:
1 name="Bob" 2 echo "my name is ${name}"
#修改name的值为Vicent
3 name="Vicent" 4 echo "My name is ${name}"
只读变量:
1 name="Bob" 2 echo "my name is ${name}"
#定义name为只读变量
3 readonly name 4 name="Vicent" 5 echo "My name is ${name}"
删除变量:
1 #删除变量name 2 unset name
将命令的运行结果赋值给变量:
1 #var1=`command1` 2 #var2=$(command1) 3 4 var1=`pwd` 5 echo ${var1} 6 var2=$(date) 7 echo ${var2}
5、shell数组
shell数组定义:
1 array_name=(var1 var2 var3 var4)
获取数组元素,下表从零开始:
1 ${array_name[index]}
#@或*表示所有元素
赋值:
1 array_name[index]=value
获取数组的长度:
1 ${#array_name[@]} 2 3 ${#array_name[*]}
删除数组元素:
1 unset array_name[index]
数组常用语法实例:
1 #!/bin/sh 2 arr1=(data1 data2 data3 data4) 3 #赋值 4 arr1[4]=data5 5 #获取第5个元素,下表从0开始 6 echo ${arr1[4]} #输出data5 7 #获取数组长度 8 echo ${#arr1[@]} #输出5 9 10 #删除第一个元素 11 unset arr1[0] 12 13 echo ${#arr1[@]} #输出4
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具