2016-03-31 17 views
1

これは私のことを大変なことではありません。これは学校からの私の最初のbash試行(9年前のような)です。Bash:forループ内の変数にワイルドカードを連結します。

私はrsyncリモートgit reposをローカルに作成するスクリプトを作成しようとしています。

ローカルディレクトリを変数に保存する必要がありますが、これは何度か使用していますが、forループで使用するワイルドカードを使用する方法がわかりません。

"/ * /"と私が実際に理解していないものは何も処理しなかったいくつかのものを連結しようとしました。あなたの助けのための

#!/bin/bash 

if [ "$#" -lt 1 ]; then 
    echo "Usage :" 
    echo "syncDown <repo1> <repo2> ..." 
    echo "syncDown --all" 
    exit 1; 
fi 

LOCAL_PATH="/Volumes/Case Sensitive/repos" 

# Sync all local repos 
if [ $1 = "--all" ]; then 
    # for dir in "$LOCAL_PATH/*/";do <-- What I tried 
    for dir in /Volumes/Case\ Sensitive/repos/*/;do # <-- What works 
     folder=$(echo $dir | rev | cut -d'/' -f2 | rev); 
     rsync -avzh --delete-after devweb:$folder --exclude ".git" --exclude ".idea" "$LOCAL_PATH" 
    done 
# Sync specific repos 
else 
    for repo in "[email protected]"; do 
     rsync -avzh --delete-after devweb:$repo --exclude ".git" --exclude ".idea" "$LOCAL_PATH" 
    done 
fi 

ありがとう:

は、ここに私のスクリプトです。

答えて

2

あなたは使用する必要があります。

for dir in "$LOCAL_PATH"/*/; do 

を引用してグロブ文字を維持し、唯一の変数を引用ないようにしてください。

+2

また、ループ内で '$ dir ''を引用する必要があります。 – tripleee

関連する問題