繁体   English   中英

Ubuntu bash-文件意外结束错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM