03 · 数组与注释
目标:掌握数组的定义/读取/长度,以及三种多行注释技巧
🎯 今天要带走的三件事
- 数组用空格分隔元素:
arr=(a b c),下标从 0 开始 ${arr[@]}取全部元素,${#arr[@]}取元素个数- 多行注释三招:
#逐行、:<<EOF、: ' ... '
一、Shell 数组
- bash 只支持一维数组(不支持多维),大小不限
- 下标从 0 开始,类似 C 语言
- 下标可以是整数或算术表达式,值 ≥ 0
定义数组
# 形式 1:一行
array_name=(value0 value1 value2 value3)
# 形式 2:多行(不用逗号,用换行或空格)
array_name=(
value0
value1
value2
)
# 形式 3:逐个定义
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
下标可以不连续,范围无限制。
读取数组
# 读取单个元素
valuen=${array_name[n]}
echo ${array_name[n]}
# 读取所有元素(用 @ 或 *)
echo ${array_name[@]}
获取数组长度
length=${#array_name[@]} # 元素个数
length=${#array_name[*]} # 同上
length=${#array_name[n]} # 第 n 个元素的字符长度
生活比喻
Shell 数组像停车位:车位编号从 0 开始,你可以跳着编号停车(0、3、7 号位都停车),系统不管你空着的位。
二、Shell 注释
单行注释
# 以 # 开头,解释器会忽略
多行注释的三种方式
方式 1:逐行加 #(最笨但最通用)
#--------------------------------------------
# 这是一个注释
# author:菜鸟教程
#--------------------------------------------
方式 2:Here Document 格式 ⭐
:<<EOF
注释内容...
注释内容...
注释内容...
EOF
原理:
:是一个空命令,<<'EOF'开启 Here 文档,中间内容被视为注释。 ⚠️ 结束标记EOF必须顶格写,前后不能有任何字符(包括空格和 tab)。
EOF 可替换成任意符号:
: <<'COMMENT'
这是注释。
COMMENT
:<<!
注释内容...
!
方式 3:冒号 + 单引号
: '
这是注释的部分。
可以有多行内容。
'
💡 还有一个骚操作:把大段代码用
{}包成一个未被调用的函数,也能达到「注释掉」的效果。
🌙 今日作业
- [ ] 定义一个 5 元素的数组,打印全部元素和元素个数
- [ ] 用
:<<EOF方式给一段代码加多行注释
自测题
arr=(a b c),echo ${#arr[@]}输出什么?echo ${arr[1]}呢?- 多行注释时
EOF前面加了个空格会怎样? - Shell 数组支持多维吗?
👉 参考答案
1. 分别输出 `3` 和 `b`(下标从 0 开始)。 2. 会失效 —— 结束 delimiter 必须顶格,否则会被当成注释内容的一部分,一直吞到文件结尾。 3. 不支持。bash 只支持一维数组(可用关联数组模拟键值)。多维需拼接字符串或用 awk 等工具。🔗 关联
Shell-学习总览|上一课 → 02-变量与字符串|下一课 → 04-传递参数