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

Bash : Concatenate wildcard to a variable in a for loop

不要对我太苛刻,这是我自上学以来的第一次 bash 尝试(大约 9 年前)。

我正在尝试创建一个脚本,它将在本地 rsync 远程 git 回购。

我想将我的本地目录存储到一个变量中,因为我多次使用它,但我不知道如何使用我在 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 [  = "--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

感谢您的帮助。

您应该使用:

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

确保不要在引号中保留全局字符,只引用变量。