不要对我这么辛苦这是我上学以来的第一次尝试(就像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
感谢您的帮助。
答案 0 :(得分:3)
您应该使用:
for dir in "$LOCAL_PATH"/*/; do
确保不在引号中保留glob字符并仅引用变量。