我正在尝试编写一个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。我已从输出中删除了一些敏感信息,但请确保格式与计算机的输出一致。
答案 0 :(得分:1)
在bash中,分配仅在=
:
variable=value # assign "value" to variable "variable"
variable = value # call program "variable" with arguments "=" and "value"
要解决您的问题,请移除=
周围的空格。
请注意,bash中的特殊变量(如PDW
,RANDOM
,...)按惯例为ALL UPPERCASE。编写脚本时,建议使用小写变量来防止意外名称冲突。
变量名称不清楚DESTDIR
和destdir
之间的差异。 DESTDIR
仅使用一次。我认为写
echo ...
read sourcedir
echo ...
read destdir
rsync ... ":$sourcedir" ":$destdir" ...