我写了一个bash脚本,用于在我的家庭服务器上传文件。它使用applescript从文件夹操作脚本中激活。安装程序是我桌面上的文件夹名为place_on_server。它应该有一个内部文件结构正是我想要写的文件夹,如:/无功/网络/媒体/ 用法是这样的:Bash脚本故障解释输入
- 如果目录等加入到place_on_server:./upload DIR等
- 如果目录的目录:ETC /电影./upload DIR等电影//等
- 如果文件place_on_server:./upload˚FFILE.TXT
- 如果文件在文件中place_on_server ./upload˚F etc file.txt //等
创建一个目录它应该执行这样的命令:
ssh [email protected]<<EOF
cd /var/www/media/wherever
mkdir newdirectory
EOF
和文件放置:
rsync -rsh='ssh -p22' file [email protected]:/var/www/media/wherever
脚本:
#!/bin/bash
addr=$(ifconfig -a | ./test)
if ($# -le "1")
then
exit
elif ($1 -eq "DIR")
then
f1="ssh -b [email protected]$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 = "[email protected]$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之后已经有一段时间了。从来没有广泛的开始。寻找解决我的问题,但也建议。提前致谢。
谢谢先生。导致响应延迟的原因是b/c我试图做出高贵的事情并编辑我自己的脚本来工作,但我无法弄清楚ssh @ host << EOF应该如何在bash脚本中工作所以我跟你一起去了。我认为你的回应会帮助很多bash noobs寻找答案。 –