0

我在启动时在 bash 脚本中使用 S3cmd。如果它返回错误代码,则脚本已准备好执行某些操作。但是,当发生错误时,s3cmd 似乎(有时)会破坏它,并在屏幕上输出信息。它只是存在我的脚本。

如何防止程序破坏我的 Bash 脚本?如果出现问题,我只希望 bash 脚本继续执行下一步操作。

编辑:似乎这只发生在/etc/rc.local。如果我将脚本作为其他东西(/home/whateverscript)运行,它会按照我的意愿运行。

4

1 回答 1

0

也许你可以把你的

s3cmd sync --recursive --delete-removed --config="$HEMMAPPEN/.s3cfg" "$SOURCEFOLDER" "$TARGETFOLDER/"

在如下脚本中,

outputText=$(s3cmd sync --recursive --delete-removed --config="$HEMMAPPEN/.s3cfg" "$SOURCEFOLDER" "$TARGETFOLDER/" 2>&1;echo ,$?)

这会将您的 stderr 重定向到 stdout ( 2>&1) 并且变量outputText将包含您想要的命令输出(格式为 *stdout,exit_status*),如果稍后在脚本上下文中需要它的话。

如果您不想要 stdout 而只想要outputText中命令的状态,则可以使用以下命令

status=$(s3cmd sync --recursive --delete-removed --config="$HEMMAPPEN/.s3cfg" "$SOURCEFOLDER" "$TARGETFOLDER/" > /dev/null 2>&1;echo $?)

status变量将包含已运行的命令的状态。

我希望这是有道理的。请评论,如果它还没有解决你的问题。

于 2013-08-05T06:42:56.673 回答