代码之家  ›  专栏  ›  技术社区  ›  Dimitrie Mititelu

bash数组使用@vs*,两者之间的差异

  •  0
  • Dimitrie Mititelu  · 技术社区  · 6 年前

    我无法精确指出使用${array[@]}与使用${array[*]}之间的确切区别

    declare -a array
    array=("1" "2" "3")
    IFS=","
    printf "%s" ${array[@]}
    printf "%s" ${array[*]}
    IFS=" "
    

    我在TLDP上搜索了一下,但没找到。 它是一个通用的bash还是仅仅针对数组? 谢谢!

    1 回复  |  直到 6 年前
        1
  •  10
  •   oliv    6 年前

    如中所述 man bash :

    如果单词是双引号,${name[*]}扩展为单个单词,每个数组成员的值由IFS特殊变量的第一个字符分隔,并且${name[@]} 将name的每个元素展开为一个单独的单词。

    示例:

    array=("1" "2" "3")
    printf "'%s'" "${array[*]}"
    '1 2 3'
    printf "'%s'" "${array[@]}"
    '1''2''3'