防止程序破坏我的Bash脚本

时间:2013-08-04 18:13:17

标签: bash s3cmd

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

如何阻止程序破坏我的Bash脚本?如果出现问题,我只想让bash脚本继续进行下一步的操作。

编辑:似乎只有 /etc/rc.local 才会发生这种情况。如果我把脚本作为别的东西(/ home / whateverscript),它就像我想要的那样。

1 个答案:

答案 0 :(得分: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 变量将包含已运行的teh命令的状态。

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