我正在尝试学习一些关于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
存在所有文件和目录。
谢谢!
答案 0 :(得分:3)
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
答案 1 :(得分:1)
结束fi
块的if
在哪里?
答案 2 :(得分:1)
这不是问题,只是一个misc 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
测试中的文件路径无关,因此您应该关闭$
。实际上,由于文件路径中没有任何有趣的字符,你甚至不需要它们周围的引号(尽管过度使用双引号比使用不足更好)。