[英]Ubuntu bash - unexpected end of file error
我正在尝试学习一些有关bash命令的信息-更具体地说是关于备份脚本的信息。 不幸的是,我在最后一行收到语法错误。 我不知道自己做错了什么,希望能就此事提供任何反馈。
码:
#!/bin/sh
if [ -f $"/archive/backup-20110111.tar.gz" ]; then
echo "File already exists"
else
sudo cp /home/plepple/Documents/backup/backup-20110111.tar.gz
/home/plepple/Documents/backup/archive/backup-20110111.tar.gz
rm /home/plepple/Documents/backup/backup-20110111.tar.gz
fi
if [ -f $"/archive/backup-20110112.tar.gz" ]; then
echo "File already exists"
else
sudo cp /home/plepple/Documents/backup/backup-20110112.tar.gz
/home/plepple/Documents/backup/archive/backup-20110112.tar.gz
rm /home/plepple/Documents/backup/backup-20110112.tar.gz
fi
curdate='date +%Y%m%d'
mv /home/plepple/Documents/backup/backup.tar.gz
/home/plepple/Documents/backup/backup-$curdate.tar.gz
我试图执行它(通过bash):
bash backupscript.sh
所有文件和目录都存在。
谢谢!
mv /home/plepple/Documents/backup/backup.tar.gz
/home/plepple/Documents/backup/backup-$datum.tar.gz
应该
mv /home/plepple/Documents/backup/backup.tar.gz \
/home/plepple/Documents/backup/backup-$datum.tar.gz
同样的道理
sudo cp /home/plepple/Documents/backup/backup-20110111.tar.gz \
/home/plepple/Documents/backup/archive/backup-20110111.tar.gz
和
sudo cp /home/plepple/Documents/backup/backup-20110112.tar.gz \
/home/plepple/Documents/backup/archive/backup-20110112.tar.gz
结束if
块的fi
在哪里?
这不是问题,只是杂项bash语法校正:在bash中,构造$"somestring"
调用本地化。 从bash手册页:
A double-quoted string preceded by a dollar sign ($) will cause the
string to be translated according to the current locale. If the cur-
rent locale is C or POSIX, the dollar sign is ignored. If the string
is translated and replaced, the replacement is double-quoted.
这似乎与if
测试中的文件路径无关,因此您可能应该取消$
。 实际上,由于文件路径中没有任何有趣的字符,因此您甚至不需要在其周围加上引号(尽管过度使用双引号要比未充分使用要好得多)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.