数组(Shell基础教程4)
数组 (Shell 基础教程 4)
教程
数组可以使用一个名称保存多个值。数组的命名规则与普通变量相同。
可以通过在括号 () 中赋值以空格分隔的值来初始化数组:
my_array=(apple banana "Fruit Basket" orange)
new_array[2]=apricot数组成员的索引不必是连续的,某些成员可以保留为未初始化状态。
数组中元素的总数可以通过 ${#arrayname[@]} 获取:
my_array=(apple banana "Fruit Basket" orange)
echo ${#my_array[@]} # 输出:4可以使用数字索引访问数组元素,第一个元素的索引为 0:
my_array=(apple banana "Fruit Basket" orange)
echo ${my_array[3]} # 输出:orange - 注意需要花括号
# 添加另一个数组元素
my_array[4]="carrot" # 赋值时不需要 $ 符号,但需要花括号
echo ${#my_array[@]} # 输出:5
echo ${my_array[${#my_array[@]}-1]} # 输出:carrot练习
在本练习中,您需要将数字和字符串添加到正确的数组中。具体要求如下:
- 将数字
1、2和3添加到NUMBERS数组中。 - 将单词
hello和world添加到STRINGS数组中。 更正变量
NumberOfNames和second_name的值:NumberOfNames应该使用$#特殊变量(实际上是${#array[@]}语法)保存NAMES数组中名称的总数。second_name应该使用方括号[ ]获取NAMES数组中的第二个名称。请注意索引是从零开始的,因此访问列表中的第二项时,其索引应为1。
教程代码
#!/bin/bash
NAMES=( John Eric Jessica )
# write your code here
NUMBERS=()
STRINGS=()
NumberOfNames=0
second_name='Vladimir'预期输出
1 2 3
hello world
The number of names listed in the NAMES array: 3
The second name on the NAMES list is: Eric解决方案
#!/bin/bash
NAMES=( John Eric Jessica )
# write your code here
NUMBERS=( 1 2 3 )
STRINGS=( "hello" "world" )
NumberOfNames=${#NAMES[@]}
second_name=${NAMES[1]}
echo ${NUMBERS[@]}
echo ${STRINGS[@]}
echo "The number of names listed in the NAMES array: $NumberOfNames"
echo "The second name on the NAMES list is:" ${second_name}系列教程链接
- Hello, World!(Shell 基础教程 1)
- 变量 (Shell 基础教程 2)
- 将参数传递给脚本 (Shell 基础教程 3)
- 数组 (Shell 基础教程 4)
- 数组比较 (Shell 基础教程 5)
- 基本运算符 (Shell 基础教程 6)
- 基本字符串操作 (Shell 基础教程 7)
- 逻辑表达式 (Shell 基础教程 8)
- 循环 (Shell 基础教程 9)
- shell 函数 (Shell 基础教程 10)
- 特殊变量 (Shell 基础教程 11)
- 字符串操作 (Shell 基础教程 12)
- 捕捉信号命令 (Shell 基础教程 13)
- 文件测试 (Shell 基础教程 14)
- 输入参数解析 (Shell 基础教程 15)
- 管道 (Shell 基础教程 16)
- 输入输出 (Shell 基础教程 17)
- 常用表达 (Shell 基础教程 18)
- 特殊命令 sed(Shell 基础教程 19)
说明:本文示例基于 Bash shell。数组是 Bash 的特性,标准的 POSIXsh可能不支持数组语法。请确保脚本解释器指定为#!/bin/bash。
版权声明:本文为原创文章,版权归 戴老师的博客 所有,转载请联系博主获得授权。
本文地址:https://1diff.fun/archives/shu-zu-shell-ji-chu-jiao-cheng-4.html
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。