BASH 字符串中的变量

BASH variable in string

此脚本 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

脚本 2 得到了 copied from here.

在遵循 Bash 上的一些说明之前我所拥有的:下面链接的单引号中的变量是:

sh ./s3-del-old.sh "$BUCKET/backup" "$EXPIRE"

这没有用,在 运行 bash 脚本时被忽略了。

我试图省略与下面的问题无关的内容,尽管我相信我可能混淆了一些内容。为此,我深表歉意。非常简单,我在 script1 中有一行调用另一个 script2。我使用变量来满足脚本的需要。它不起作用,我无法在网上找到易于理解的解决方案,因此需要 post 这个问题。

----更新结束----

我已经查看了一些已回答的问题,但我没有找到适合我需要的解决方案,也没有找到我可以完全理解的解决方案来满足我的需要。

我有 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 而不是两个。另外,通过这种方式,我可以通过更改变量将脚本与我的任何 domains/buckets 一起使用。 :)

你需要调用的"other script"是a bash script

bash 脚本(通常)如果被调用为 sh 将不起作用,就像您正在做的那样:

sh ./s3-del-old.sh ''"${BUCKET}"'/backup' '"${EXPIRE}"'

请用bash调用脚本:

bash ./s3-del-old.sh "${BUCKET}"/backup "${EXPIRE}"

或者更好的是,让脚本选择应该 运行 的 shell:

./s3-del-old.sh "${BUCKET}"/backup "${EXPIRE}"

随着文件的shebang s3-del-old.sh:

#!/bin/bash

有时我会惊讶于我尝试制作东西的难度...s3cmd 具有按创建日期对文件进行过期的功能...这会容易得多...

非常感谢所有帮助过的人!

糟糕,这应该是评论而不是答案。 :)