我正在使用以下循环:
for path in /var/www/*; do
[ -d "${path}" ] ||
dirname="$(basename "${path}")"
/usr/bin/s3cmd sync "/var/www/${dirname}" s3://folder
done
我如何排除例如以cache或node_modules命名的文件的文件夹?
期待收到你的消息!
答案 0 :(得分:0)
使用带有for循环的case语句。试试这个:
for path in `/bin/ls /var/www` do case "$path" in cache*) #skip this continue ;; *) #process these dirname="$(basename "${path}")" /usr/bin/s3cmd sync "/var/www/${dirname}" s3://folder ;; esac done
答案 1 :(得分:0)
如果您的用例很简单,您可以尝试以下方法:
for path in `/bin/ls /var/www | grep -v "cache"` do
[ -d "${path}" ] ||
dirname="$(basename "${path}")"
/usr/bin/s3cmd sync "/var/www/${dirname}" s3://folder
done
或者,使用位置参数,[和var。替换你可能有
./script.sh $1 $2 $3
并且如果它对您的用例有用,则将其变为可变。
答案 2 :(得分:0)
您可以在for循环中使用case
语句,如下所示:
for path in /var/www/*; do
name=$(basename "$path")
case "$name" in
cache|node_modules)
continue
;;
*)
/usr/bin/s3cmd sync "$path" s3://folder
;;
esac
done