复制文件列表

时间:2017-11-10 13:45:11

标签: bash shell

我有一个奇怪的脚本,它会获取一个文件列表,并希望将它们复制到其他文件夹中。

#!/bin/bash
set -e

function_name=copy_verifier
envs=(one two)
files_to_copy=( index.js config/default.js )

for env in "${envs[@]}"
do
  env_function_name="${function_name}"_"$env"
  echo "$(tput setaf 3)  -> Copying ${env_function_name}$(tput sgr0)"
  mkdir -p "${env_function_name}/config"
  cp -rf ${files_to_copy[@]} ${env_function_name}/
done

echo -e "$(tput setaf 4)-> Done updating$(tput sgr0)"

问题是config/文件夹中的文件永远不会被复制。我是否需要迭代每个文件才能复制它们?

我在OSX上

3 个答案:

答案 0 :(得分:1)

您只需使用rsync代替。

rysnc -r ${files_to_copy[@]} ${env_function_name}/

答案 1 :(得分:0)

您使用的变量不正确:

$function_name

应该是:

${function_name}

否则它相当于:

${function}_name

答案 2 :(得分:0)

config/中的文件实际上已复制到$env_function_name/。如果您需要将./config/default.js复制到$env_function_name/config/,可以尝试

cp -f --parents ${files_to_copy[@]} $env_function_name