2016-08-14 144 views
-1

我在根目录中,我正在创建一个脚本,它将使我从根>主页>日志和内部日志中删除3个日志文件。 脚本会检查它们是否存在,如果是,它将删除它。 如果你可以帮忙,我正面临一些语法问题。Unix脚本更改目录

感谢

我的代码:

#!/bin/sh 
cd Home/Log 
if [ -e error1.log ] 
then 
rm error1 
fi 
if [ -e error2.log ] 
then 
rm error1 
fi 
if [ -e error3.log ] 
then 
rm error1 
fi 

当我执行使用./delete在这里的根文件是什么,是我得到的错误:

$ ./delete 
: No such file or directoryme/Log 
./delete: line 14: syntax error near unexpected token `fi' 
+1

你确定存在这样一个路径'Home/Log'是你运行脚本时的当前目录吗? –

+0

是我自己创建的 – Johnny

+1

如果在shell中手动逐个运行命令,会发生什么情况? –

回答

1

我在根目录下

在编写脚本时,几乎总是最好不要假设那样的事情。如果你知道这些文件在哪里,并且它们相对于当前的工作目录而言并不重要,那么只需命名它们即可。

这里有三种方法可以完成你想要的安全。

#!/bin/sh 
dir=/Home/Log 
rm -f ${dir}/error1.log ${dir}/error2.log ${dir}/error2.log 

#!/bin/sh 
dir=/Home/Log 
rm -f ${dir}/error{1,2,3}.log 

#!/bin/sh 
set -e 
cd /Home/Log && rm -f error1.log error2.log error2.log 

对于任何非平凡,set -e是你的朋友。在您的示例中,脚本中稍后没有任何反应。你不想要的是继续前进想着你已经改变了目录,但没有,并且在你不想要的地方涂鸦。许多人失去了那么多。

+0

谢谢你解决这个问题。 – Johnny