gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:42:41 25 4
gpt4 key购买 nike

我正在尝试创建一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com