Arrays 如何在数组中获取变量

Arrays 如何在数组中获取变量,arrays,bash,variables,Arrays,Bash,Variables,我一直在为这个问题绞尽脑汁,就是想不出来 我有一个数组,除了1值是一个变量外,它工作得很好,我不知道如何让函数实际使用变量的值 #!/bin/bash set -e FILE_LIST=( "${file0}" /etc/file1 /etc/file2/file2 /etc/file3 ) CopyFiles() { local -a arr local eval_cmd i printf -v eval_cmd 'arr=( "${%q[@]}" )' "$2

我一直在为这个问题绞尽脑汁,就是想不出来

我有一个数组,除了1值是一个变量外,它工作得很好,我不知道如何让函数实际使用变量的值

#!/bin/bash
set -e

FILE_LIST=(
  "${file0}"
  /etc/file1
  /etc/file2/file2
  /etc/file3
)

CopyFiles() {
  local -a arr
  local eval_cmd i
  printf -v eval_cmd 'arr=( "${%q[@]}" )' "$2"
  eval "$eval_cmd"
  for i in "${arr[@]}"; do
    "$1"
  done
}

RevertFiles() {
  cp -pv "/tmp$i" "$i"
}

file0=/etc/file0 # it could also be /etc/fileA or any other file path

CopyFiles 'RevertFiles' 'FILE_LIST'

我如何让for循环使用$file0的值?

请原谅我附加了一个问题作为注释,但是
$file0
在哪里分配?应该包含什么?我能看到它不会包含在
文件列表
中的唯一原因是当
文件列表
数组被填充时,它是空的??如果您想要一个文本
$file0
,则
单引号
可以防止取消引用或转义
$
(例如
\$file0
)。这就是您正在尝试的吗?在初始化文件列表数组之前是否设置了
file0
?如果是这样,其值将正确显示在循环中。您是否希望在循环中对变量求值?假设file0=/etc/file0,但也可以是/etc/fileA或任何其他变量variation@DavidC.Rankin,不,我不是在找文本$file0,file0可以是任何文件路径然后在用
文件列表=(…)填充
文件列表之前,您需要一个
文件0=/any/file/path
文件0
将取消设置/为空。(我看到您的编辑,如果您在
文件列表
上方填写,您的罚款)请原谅作为注释的附加问题,但是
$file0
分配在哪里?应该包含什么?我能看到它不会包含在
文件列表
中的唯一原因是当
文件列表
数组被填充时,它是空的??如果您想要一个文本
$file0
,则
单引号
可以防止取消引用或转义
$
(例如
\$file0
)。这就是您正在尝试的吗?在初始化文件列表数组之前是否设置了
file0
?如果是这样,其值将正确显示在循环中。您是否希望在循环中对变量求值?假设file0=/etc/file0,但也可以是/etc/fileA或任何其他变量variation@DavidC.Rankin,不,我不是在找文本$file0,file0可以是任何文件路径然后在用
文件列表=(…)填充
文件列表之前,您需要一个
文件0=/any/file/path
文件0
将取消设置/为空。(我看到您的编辑,如果您将其填写在
文件列表
上方,则罚款)