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
确保不要在引号中保留全局字符,只引用变量。
不要对我太苛刻,这是我自上学以来的第一次 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
确保不要在引号中保留全局字符,只引用变量。