我有一个奇怪的脚本,它会获取一个文件列表,并希望将它们复制到其他文件夹中。
#!/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上
答案 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