Arrays 如何在数组中获取变量
我一直在为这个问题绞尽脑汁,就是想不出来 我有一个数组,除了1值是一个变量外,它工作得很好,我不知道如何让函数实际使用变量的值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
#!/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
将取消设置/为空。(我看到您的编辑,如果您将其填写在文件列表
上方,则罚款)