2013-02-13 55 views
0

我有一个SCP脚本,看起来像这样:bash和nohup的捕获

#!/bin/bash 
scp -r /usr/local/htdocs/$1 [email protected]$2:/local/htdocs 

我想从命令行调用它,并通过目录和目标服务器,与此类似:

move_site.sh website servername 

但是,我想捕获包含2个参数的文件中的输出。

所以我想这一点,但使用的nohup

#!/bin/bash 
scp -r /usr/local/htdocs/$1 [email protected]$2:/local/htdocs > $1$1.out 

我怎样组织既脚本和调用命令,以便它在后台运行时调用它并没有显示任何信息,并捕获输出基于目的地和网站?

回答

0

您的脚本应该可以正常工作,但可能在尝试scp时出错,这就是为什么您的输出文件为空?要捕获错误信息输出文件藏汉,改变>>&

#!/bin/bash 
scp -r /usr/local/htdocs/$1 [email protected]$2:/local/htdocs >& $1$2.out 

要在后台运行脚本,只需在命令的末尾添加&

move_site.sh website servername & 

附: 网站服务器名称不应包含任何字符,如果您坚持在$1$2.out表单中使用它们,则不应包含文件名中所允许的任何字符。

0

如果你想通过两个或多个单词作为单个参数,你必须加上引号把它包起来:

$ cat s.sh 
#!/bin/bash 
echo "param1: $1, param2: $2" 

所以我们得到:

$ ./s.sh "a b" c 
param1: a b, param2: c 

下面这个例子中,你有从而改编你的剧本。