我编写了一个 bash 脚本,用于在我的家庭服务器上上传文件。它是从使用 applescript 的文件夹操作脚本中激活的。设置是我桌面上名为 place_on_server 的文件夹。它应该具有与我要写入的文件夹完全相同的内部文件结构: /var/www/media/ 用法如下所示:
- 如果将目录等添加到 place_on_server: ./upload DIR 等
- if directory of directory: etc/movies ./upload DIR etc movies //等等
- if file to place_on_server: ./upload F file.txt
- if file in file in place_on_server ./upload F etc file.txt //等等
用于创建一个目录,它应该执行如下命令:
ssh root@192.168.1.1<<EOF
cd /var/www/media/wherever
mkdir newdirectory
EOF
和文件放置:
rsync -rsh='ssh -p22' file root@192.168.1.1:/var/www/media/wherever
脚本:
#!/bin/bash
addr=$(ifconfig -a | ./test)
if ($# -le "1")
then
exit
elif ($1 -eq "DIR")
then
f1="ssh -b root@$addr<<EOF"
list = "cd /var/www/media\n"
if($# -eq "2")
then
list=list+"mkdir $2\nEOF\n"
else
num=2
i=$(($num))
while($num < $#)
do
i=$(($num))
list=list+"mkdir $i\n"
list=list+"cd $i\n"
$num=$num+1
done
fi
echo $list
elif ($1 -eq "F")
then
#list = "cd /var/www/media\n"
f2="rsync -rsh=\'ssh -p22\' "
f3 = "root@$addr:/var/www/media"
if($# -eq "2")
then
f2=f2+$2+" "+f3
else
num=3
i=$(($num))
while($num < $#)
do
i=$(($num))
f2=f2+"/"+$i
$num=$num+1
done
i=$(($num))
f2=f2+$i+" "+$f3
fi
echo $f2
fi
exit
输出:
(prompt)$ ./upload2 F SO test.txt
./upload2: line 3: 3: command not found
./upload2: line 6: F: command not found
./upload2: line 25: F: command not found
如您所见,我在处理输入时遇到问题。自从我完成 bash 以来已经有一段时间了。而且它从一开始就不是广泛的。寻找我的问题的解决方案,但也有建议。提前致谢。