我已经编写了一个脚本来检查var / log目录,并在其中获取所有目录,并检查这些目录中是否有存档目录。如果存档目录不存在,我想创建它,但是一旦创建,脚本将尝试再次创建它。
vdir=$(sudo sh -c "find /var/log/ -maxdepth 1 -type d ! -name "archive"" )
for i in $vdir ;do
echo $i
if [[ ! -d $i/$arc ]];then
sudo sh -c "mkdir $i/$arc"
echo "$date:$HN:Creating:$i/$arc:directory" >> logrotation.log
fi
done
当我执行上述代码时,它给了我这个错误。似乎脚本没有检查条件。
mkdir: cannot create directory ‘/var/log/speech-dispatcher/archive’: File exists
问题是您有两个[
符号。您只需要一个:
if [ ! -d $i/$arc ];then
还有一点:某些外壳版本无法处理;
右括号旁边的内容。因此,我建议使用这种格式以获得最佳兼容性:
if [ ! -d $i/$arc ] ; then
编辑:由于上述没有帮助您,更多的想法:
您的脚本(以您的身份运行)也很可能无法实际读取$i
目录的内容,因此测试总是会失败(或实际上会成功)。但是,当您通过sudo以root身份创建目录时,该目录已经存在。
[在sudo下运行整个脚本,而不是仅运行其中的某些脚本,效率也会更高。]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句