bash脚本没有捕获stdout,只是stderr

时间:2013-02-17 20:41:56

标签: bash

我有以下脚本(我们称之为move_site.sh)将网站目录结构复制到另一台服务器

#!/bin/bash
scp -r /usr/local/apache2/htdocs/$1 http@$2:/local/htdocs 1>$1$2.out 2>&1

所以从命令行调用它,我将webiste站点目录名称和目标服务器传递给它:

nohup ./move_site.sh site1 server1 &

但是,在名为site1server1.out的结果中,只有stderr消息(如果有)。

有人能告诉我如何获取复制的文件和目录名,包含在输出文件中,以便我有某种记录吗?

感谢。

1 个答案:

答案 0 :(得分:2)

快速尝试: 也许是因为当一切顺利时,scp不会向stdout(?)打印任何内容。

试一试:在脚本之外运行你的scp命令,很可能你没有std出来的东西。 (没有重定向到$ 1 $ 2.out,它仍然没有:))

我认为scp不可能,但使用rsync可以跟踪已传输到stdout的内容。因此,将scp -r更改为rsync -r -v -e应该可以解决问题。 (至少如果你可以使用rsync而不是scp)。