用于rsync ssh用户输入的bash脚本

时间:2017-08-31 17:58:55

标签: linux bash unix ssh rsync

我正在尝试编写一个rsync脚本,该脚本将用户输入到源文件的路径并将其发送到远程计算机上的另一个用户输入路径。

 #!/bin/bash

echo -e "What is the directory on the local machine you want to send"

read sourcedir


SOURCEDIR = :$sourcedir

echo -e "What is the directory on the GPU box you want to send these files over to?"

read destdir

DESTDIR = :$destdir

rsync -avu -e "ssh -p xxxx" $SOURCEDIR $DESTDIR user@remote.computer --progress

当我执行脚本时,我收到以下错误

-bash: DESTDIR: command not found
building file list ...
rsync: link_stat "/path/to/script/user@remote.computer" failed: No such file or directory (2)
0 files to consider
sent 29 bytes  received 20 bytes  98.00 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files could not be transferred (code 23) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-51/rsync/main.c(996) [sender=2.6.9]

非常感谢您对正确编写此脚本的建议/建议。

PS。我已从输出中删除了一些敏感信息,但请确保格式与计算机的输出一致。

1 个答案:

答案 0 :(得分:1)

问题

在bash中,分配仅在=

周围没有空格
variable=value      # assign "value" to variable "variable"
variable = value    # call program "variable" with arguments "=" and "value"

要解决您的问题,请移除=周围的空格。

更好的解决方案

请注意,bash中的特殊变量(如PDWRANDOM,...)按惯例为ALL UPPERCASE。编写脚本时,建议使用小写变量来防止意外名称冲突。

变量名称不清楚DESTDIRdestdir之间的差异。 DESTDIR仅使用一次。我认为写

会更容易也更清晰
echo ...
read sourcedir
echo ...
read destdir
rsync ... ":$sourcedir" ":$destdir" ...