Как передать массив в качестве аргумента функции?

  • Расширение массива без индекса дает только первый элемент, используйте

    copyFiles "${array[@]}"

    вместо

    copyFiles $array
  • Используй she-bang

    #!/bin/bash
  • Используйте правильный синтаксис функции

    Допустимыми вариантами являются

    function copyFiles {…}function copyFiles(){…}function copyFiles() {…}

    вместо

    function copyFiles{…}
  • Используйте правильный синтаксис для получения параметра массива

    arr=("$@")

    вместо

    arr="$1"

Следовательно

#!/bin/bashfunction copyFiles() {   arr=("$@")   for i in "${arr[@]}";      do          echo "$i"      done}array=("one 1" "two 2" "three 3")copyFiles "${array[@]}"

Вывод таков (мой скрипт имеет имя foo)

$ ./foo   one 1two 2three 3