我正在尝试制作一个小脚本,或多或少自动地将我的项目目录与共享git repo同步。然而,我似乎没有把第一句话说对。因此,理论上这应该是好的:
#!/bin/bash
rsync -trnv /mnt/d/project/bundle/ /mnt/d/bundle/ --exclude=".git" --delete
cd /mnt/d/bundle/
git add .
read -p "" msg
git commit -m $msg
git push origin master
cd "${0%/*}"
脚本失败了,afaik,因为它完全忽略了rsync命令的第二个选项。此外,它找不到目录,这是一个绝对路径,并且存在。请参见:
$ bash -x ptmrbundle-rsync.sh
+ rsync -trnv /mnt/d/bundle/ /mnt/d/project/bundle/ --exclude=.git $'--delete\r' rsync: --delete\#015: unknown option rsync error: syntax or usage error (code 1) at main.c(1572) [client=3.1.1]
+ cd $'/mnt/d/bundle/\r' : No such file or directory: cd: /mnt/d/bundle/
注意:在windows的linux子系统上工作。
因此,命令行在shell itselt中工作正常,但在中使用时。sh脚本(如果完全失败)。怎么了?