0

我有一个看起来像这样的 scp 脚本:

#!/bin/bash
scp -r /usr/local/htdocs/$1 httpd@$2:/local/htdocs

我想从命令行调用它,并传递一个目录和目标服务器,类似于:

move_site.sh website  servername

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

所以我尝试了这个,但是在使用 nohup 调用时它没有打印任何内容

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

如何构建脚本和调用命令,使其在后台运行,并根据目标和站点捕获输出?

4

2 回答 2

0

如果要将两个或多个单词作为单个参数传递,则必须用引号括起来:

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

所以我们得到:

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

按照这个例子,你必须相应地调整你的脚本。

于 2013-02-13T14:46:41.647 回答
0

您的脚本应该可以工作,但是尝试scp时可能出现错误,这就是您的输出文件为空的原因?要将错误消息也捕获到输出文件,请更改>>&

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

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

move_site.sh website  servername &

PS网站服务器$1$2.out名不应包含任何字符,如果您坚持在表格中使用它们,则文件名中不允许出现这些字符。

于 2013-02-13T15:00:29.720 回答