2017-11-10 6 views
1

私は、ファイルのリストを取得し、それらを他のフォルダにコピーする奇妙なスクリプトを持っています。ファイルのリストをコピーする

#!/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

答えて

1

を試みることができるあなたは、単に代わりにrsyncを使用することができます。

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

0

によ:

$function_name 

は次のようになります。

${function_name} 

それ以外の場合は同等です:

${function}_name 
+0

ありがとう。固定して質問を更新しました – Mio

0

のファイルは実際にあなたの$env_function_name/にコピーされます。あなたは$env_function_name/config/./config/default.jsをコピーする必要がある場合は、

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

悲しいことに、悲しいことですが、私はここに関数--parentsオプションを持っていません:/ – Mio

+0

それは 'rsync -R $ {files_to_copy [@]} $ env_function_name'で動作します。私はあなたがカルマを得るためにあなたの答えを変えさせます。 :) – Mio

+0

心配はいりません。 'rsync'は問題ありません。別の答えとしてそれを書くことができます、歓声。 – thanasisp

関連する問題