Bash:将通配符连接到for循环中的变量

时间:2016-03-31 07:34:34

标签: bash glob

不要对我这么辛苦这是我上学以来的第一次尝试(就像9年前一样)。

我正在尝试创建一个在本地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 "$@"; do
        rsync -avzh --delete-after devweb:$repo --exclude ".git" --exclude ".idea" "$LOCAL_PATH"
    done
fi

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您应该使用:

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

确保不在引号中保留glob字符并仅引用变量。