shell脚本,循环数组,为什么使用${array[@]}

shell脚本,循环数组,为什么使用${array[@]},shell,Shell,""是什么意思?, 代码: 在循环中,为什么使用${array[@]}而不是$array,thx$array的工作方式与数组不同。它的作用更像是${array[0]}$array计算数组中的第一个元素。您必须使用${array[@]}(或者更准确地说,“${array[@]}”)依次指示数组的每个元素,由$IFS的第一个字符分隔。这是该语言定义的语法。这就是它的工作原理。在manbash中阅读相关内容,搜索标题为“数组”的部分。以下是相关部分: 数组的任何元素都可以使用${name[subscr

""是什么意思?, 代码:


在循环中,为什么使用${array[@]}而不是$array,thx

$array
的工作方式与数组不同。它的作用更像是
${array[0]}

$array
计算数组中的第一个元素。您必须使用
${array[@]}
(或者更准确地说,
“${array[@]}”
)依次指示数组的每个元素,由
$IFS

的第一个字符分隔。这是该语言定义的语法。这就是它的工作原理。在
manbash
中阅读相关内容,搜索标题为“数组”的部分。以下是相关部分:

数组的任何元素都可以使用${name[subscript]}引用。 需要大括号以避免与路径名扩展冲突。如果 下标为@或*,该词扩展到name的所有成员。这些 只有当单词出现在双引号内时,下标才会不同。如果 该单词是双引号,${name[*]}扩展为一个带有 由IFS的第一个字符分隔的每个数组成员的值 特殊变量,${name[@]}将name的每个元素扩展为sep 阿拉伯字。当没有数组成员时,${name[@]}扩展为 没有什么。如果双引号展开发生在单词内,则 第一个参数的展开与 原始单词和最后一个参数的展开式连接在一起 用原单词的最后一部分。这类似于 特殊参数*和@的扩展(见特殊参数 上文)

#!/bin/bash

array[0]=1
array[1]=2
array[2]=3
array[3]=4
array[4]=5

#work
for num in ${array[@]}
do
    echo $num
done

#not work
for num in array
do
    echo $num
done