Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell AWS CLI S3同步排除不在脚本中工作,直接在终端中工作_Shell_Amazon S3_Centos_Sh_Aws Cli - Fatal编程技术网

Shell AWS CLI S3同步排除不在脚本中工作,直接在终端中工作

Shell AWS CLI S3同步排除不在脚本中工作,直接在终端中工作,shell,amazon-s3,centos,sh,aws-cli,Shell,Amazon S3,Centos,Sh,Aws Cli,我正在尝试创建一个shell脚本来管理与s3 bucket的同步。 以下是我脚本中的内容: #!/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…获取文件和文件夹列表$

我正在尝试创建一个shell脚本来管理与s3 bucket的同步。 以下是我脚本中的内容:

#!/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,它将不起作用..是因为它在$(..)内吗?

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

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

成功了。

当脚本不工作时,您如何运行脚本?在这种情况下,点可能会有不同的解释。我添加了它(#!/bin/bash)好的,但它是如何执行的。cron?添加一个
--debug
参数,看看它说了什么。(您可能想删除
--dryrun
)这基本上是一样的,解决方案也是一样的:使用数组。