【发布时间】:2016-10-05 15:33:33
【问题描述】:
此脚本 1 未按预期工作。我将在下面解释:
#!/bin/bash
### SETUP ###
USER="MYUSER"
DIRS="MYDIR"
BUCKET="mybucket"
DOACCESS="ACCESSKEY"
DOSECRET="SECRETKEY"
NAME="FILENAME"
EXPIRE="7 days"
NOW=$(date +"%d-%m-%Y")
DAY=$(date +"%a")
# ...lots of code that is working great...
### CLEAN OLD FILE FROM BUCKET ###
### This is the line that I am having issues with.
sh ./s3-del-old.sh ''"${BUCKET}"'/backup' '"${EXPIRE}"'
END
script2 得到了copied from here。
在遵循一些关于 Bash 的说明之前我所拥有的:下面链接的单引号中的变量是:
sh ./s3-del-old.sh "$BUCKET/backup" "$EXPIRE"
这不起作用,在运行 bash 脚本时被忽略。
我试图省略与以下问题无关的内容,尽管我相信我可能会混淆。为此我深表歉意。很简单,我在script1 中有一条线调用另一个script2。我使用变量来满足脚本的需要。它不起作用,我在网上找不到易于理解的解决方案,因此需要发布问题。
----更新结束----
我查看了一些已回答的问题,但我没有找到适合我的需求或我可以完全理解以用于我的需求的解决方案。
我有tried following this,不过我需要更多帮助。
这就是我想要做的:
我有一个备份脚本,它使用 DreamHost 的 DreamObjects 来存储我的备份。 DreamObjects 令人讨厌的部分是它没有任何用于删除 x 天前创建的文件的内置功能。因此我的问题。我想从我的 bash 文件中添加对 bash 文件的调用。如果这是有道理的。 :) 如果没有,下面有问题的代码,你应该能看懂。
我真的希望能够将代码添加到我当前的脚本中,而不是使用单独的文件。我只是不知道如何正确地重写它而不花费比我更多的时间。我found the code at。
我的变量对这个问题很重要:
BUCKET="mybucket"<br>
EXPIRE="7 days"
这是调用文件的行:
sh ./s3-del-old.sh ''"${BUCKET}"'/backup' '"${EXPIRE}"'
这为我提供了日期错误:
invalid date `-"${EXPIRE}"'
该文件使用以下语法工作:
s3-del-old "bucket" "30 days"
当我在命令行中单独使用它时,它确实工作得很好,我只想将调用添加到一个文件中,这样我就可以使用一个 cronjob 而不是两个。另外,通过这种方式,我可以通过更改变量将脚本与我的任何域/存储桶一起使用。 :)
【问题讨论】:
-
您的意思是 BUCKET 变量正确传递但只有 EXPIRE 失败?如果是这样,EXPIRE 是否需要是一个变量?
-
参数
'"${EXPIRE}"'在单引号' "${EXPIRE}" '内。单引号内的 shell 变量不展开。这是你想做的吗?如果您需要更多帮助,请提供使用'"${EXPIRE}"'的脚本部分。 -
我想你只需要这个:
sh ./s3-del-old.sh "$BUCKET/backup" "$EXPIRE" -
@StefanoMaffulli EXPIRE 是用于确定删除内容的天数变量。我想我不需要它是一个变量,尽管我仍然想了解它应该如何完成。由于我的文件正在上传到存储桶,因此存储桶变量传递给脚本。我不确定有问题的线路。
-
@sorontar 使用 EXPIRE 的脚本部分包含在问题中(这是调用文件的行:sh ./s3-del-old.sh ''"${BUCKET} "'/backup' '"${EXPIRE}"')。我将变量声明为 BUCKET="mybucket" 和 EXPIRE="7 days"。