2016-03-31 2 views
1

Не будьте твердыми на меня, это моя первая попытка шока со школы (например, 9 лет назад).Bash: привязать шаблон к переменной в петле цикла

Я пытаюсь создать скрипт, который будет локально удален локальным репозиторией rsync.

Я хочу сохранить свой локальный каталог в переменную, потому что я использую его несколько раз, но не могу найти, как это сделать с помощью шаблона, который я использую в цикле 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