2016-03-31 17 views
1

Bana bu kadar sert davranma, okuldan bu yana ilk bash giriþimim (9 sene önce).Bash: Bir döngü için bir değişkene joker karakteri birleþtirin

Uzaktan yerel git reposlarını rsync olacak bir komut dosyası oluşturmaya çalışıyorum.

Yerel dizini bir değişkendeyken saklamak istiyorum çünkü bunu birkaç kez kullanıyorum ancak for döngüsünde kullandığım joker karakteriyle nasıl yapılacağını bulamıyorum. "/ * /" Ve gerçekten anlamadığım ancak başka hiçbir şeyin işe yaramadığı bazı diğer şeyleri birleştirmeye çalıştım. Yardımlarınız için

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

Teşekkür:

İşte benim senaryom.

cevap

2

kullanarak edilmelidir:

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

alıntı ve tek değişken alıntı glob karakterini tutmak için emin olun.

+2

Ayrıca, döngü içinde kullandığınız "$ dir" 'de yazmalısınız. – tripleee

İlgili konular