我正在使用以下循环:
for path in /var/www/*; do
[ -d "${path}" ] ||
dirname="$(basename "${path}")"
/usr/bin/s3cmd sync "/var/www/${dirname}" s3://folder
done
例如,我如何排除名为cache或node_modules的文件的文件夹?
期待收到你的来信!
使用case语句和for循环。试试这个:
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
如果您的用例很简单,您可以尝试以下方法:
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
并且如果它对您的用例有用,请将其变量。
您可以在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