shell - AWS CLI S3 Sync 排除在脚本中不起作用,直接在终端中起作用

标签 shell amazon-s3 centos sh aws-cli

我正在尝试创建一个 shell 脚本来管理我与 s3 存储桶的同步。
这是我的脚本中的内容:

#!/bin/bash

aws s3 sync $1 $2 $(for word in $(echo "$excludeconf"| tr ";" " "); do echo -n "--exclude \"$word\" "; done) $del --no-follow-symlinks $3
$1是源$2是目的地$3是另一个被传递的参数(dryrun)。 $(word...获取文件和文件夹列表 $excludeconf并创建 --exclude ...跟他们。

如果我运行脚本,它不会排除任何东西。

如果我把 echo在上面的命令前面,我得到了这个:
aws s3 sync . s3://BUCKETNAME/FOLDERNAME/ --exclude .SOMEFILE --exclude "public/icon/*" --delete --no-follow-symlinks --dryrun

如果我复制该命令并在终端内手动运行它,它就可以正常工作。

有任何想法吗?

仅供引用:我正在运行 CentOS 7

编辑:

经过一些测试,我发现问题是通配符:public/icon/* 被解释为 public/icon/folder1 public/icon/folder2 如果我尝试设置 noglob,它将不起作用.. isist 因为它在 $ 内(..)?

最佳答案

我用python重写了脚本并将其更改为:

os.system("set -f noglob && aws s3.....")

那行得通。

关于shell - AWS CLI S3 Sync 排除在脚本中不起作用,直接在终端中起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50592374/

相关文章:

java - AWS S3上传图像在部署到EBS时不起作用,但在本地主机SpringBoot(JAVA)中起作用

amazon-web-services - 如何将我自己的日志添加到 Amazon Elastic Beanstalk 上的日志轮换/S3 备份?

GIT 忽略 CentOS 中的代理配置

linux - 在 linux 中列出除少数文件之外的所有文件

bash - 在bash数组中循环使用docker命令的参数?

bash - 如何使用 gcloud 命令或任何 bash 脚本从所有版本中过滤最新的应用程序引擎版本

Golang amazon s3 如何更快地上传图像

apache - PHP 升级后网站无法从外部访问

bash - ZSH 无法识别我的别名?

linux 排序命令结果让我很困惑