繁体   English   中英

AWS CLI S3 Sync排除了不能在脚本中正常运行,而是直接在终端中运行

[英]AWS CLI S3 Sync exclude not working in script, directly in terminal it does

我正在尝试创建一个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,它将无法工作.. ist是因为它位于$里面(..)?

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

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

那行得通。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM