mkdir bug


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting mkdir bug
# 1  
Old 11-24-2010
mkdir bug

Dear,

I have the following script:
Code:
maak_backup ()
{
    echo 'Maken van tijdelijke bestanden, even geduld aub.'
    for i in /home/yannick/* ; 
    do
    cp -r $i $i.bac    
    done

    if [ -d /backup ] ;
    then
        echo 'Backup map = OK!'
        echo 'Bezig met kopiëren, even geduld aub.'
        for i in /home/yannick/*.bac ; 
        do
        cp -r $i /home/yannick/backup    
        echo 'Verwijderen van tijdelijke bestanden, even geduld aub.'
        rm -r $i        
        done
        echo 'Backup geslaagd!'
    else
        mkdir -p /home/yannick/backup
        echo 'Bakup map aangemaakt!'
        echo 'Bezig met kopiëren, even geduld aub.'
        for i in /home/yannick/*.bac ; 
        do
        cp -r $i /home/yannick/backup    
        echo 'Verwijderen van tijdelijke bestanden, even geduld aub.'
        rm -r $i        
        done
        echo 'Backup geslaagd!'
    fi

}

In het second else statement, there's an mkdir line that normally will create a directory. But this mkdir creates a file instead of the directory.

Can someone assist me?
# 2  
Old 11-24-2010
It might sound like stupid idea. Since you have /home/yannick always available.
Try making following changes.
Code:
if [ -d /home/yannick/backup ] ;
..
 else
        mkdir  /home/yannick/backup

# 3  
Old 11-24-2010
Quote:
Originally Posted by mtomar
It might sound like stupid idea. Since you have /home/yannick always available.
Try making following changes.
Code:
if [ -d /home/yannick/backup ] ;
..
 else
        mkdir  /home/yannick/backup

Nope, that's not the answer. It's still creating the file instead of the directory.

Some other suggestions?
# 4  
Old 11-24-2010
Weird , however seems to be co-incidence ...

That the file already exist with the same name your script wants to create a directory with. You are using -p switch , which won't give you error but won't create the directory either as the file is there. Delete that file first and then run the script again.
# 5  
Old 11-24-2010
Yes i guess it is not a bug, it is an attended behaviour.
By the way... if you use to create directory as a flag or for lock operation in order to avoid using noclobber stuff, you are right to point out that the -p option does not preserve the atomicity of the mkdir command (or can not be threated as is).

And... as already stated by the previous comments of other dudes, you are missing a dot :
Code:
if [ -d ./backup ]

or better
Code:
if [ -d /home/yannick/backup ]
then
    ...
else
   mkdir -p /home/yannick/backup
   ...
fi


Last edited by ctsgnb; 11-24-2010 at 02:34 PM..
# 6  
Old 11-24-2010
Quote:
Originally Posted by Praveen_218
That the file already exist with the same name your script wants to create a directory with. You are using -p switch , which won't give you error but won't create the directory either as the file is there. Delete that file first and then run the script again.
I deleted the backup file, and now it works! Quite easy.

Thank you ..

---------- Post updated at 07:32 PM ---------- Previous update was at 07:31 PM ----------

Quote:
Originally Posted by ctsgnb
Yes i guess it is not a bug, it is an attended behaviour.
By the way... if you use to create directory for lock operation in order to avoid using noclobber stuff, you are right to point out that the -p option does not preserve the atomicity of the mkdir command (or can not be threated as is).

In addition to the previous comments :
  1. if [ -d /home/yannick/backup ]
then
...
else
mkdir -p /home/yannick/backup
...
fi
I erased the -p .. I thought it was necessary because I have a long url.
# 7  
Old 11-24-2010
check the return code of mkdir and cp. dont assume it will work correctly
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Mkdir

hi linux expert what is a difference between: mkdir test and mkdir ./test and also if ( -e /test ) then and if ( -e ./test ) then thanks in advance Please use icode or code tags next time for your code and data (1 Reply)
Discussion started by: abdossamad2003a
1 Replies

2. UNIX for Dummies Questions & Answers

How to use mkdir{...} with a variable?

Hi, I used "mkdir job{0001..10}" do get directories. Now I want to create directories with a variable, for exemple "mkdir job{0001..$a}". When a=5 I get the directory "job{0001..5}". What have i to change to get job0001,...,job0005 :/ Thx for ur help :) (1 Reply)
Discussion started by: E_taks
1 Replies

3. UNIX for Dummies Questions & Answers

Mkdir utility

Howdy, Puttering around in unix, and read this in the mkdir man page: "The mkdir utility creates the directories named as operands..." What does this mean, i.e. as operands? Many thanks, DN (2 Replies)
Discussion started by: danuke
2 Replies

4. Homework & Coursework Questions

Mkdir

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Do the procedure, which if there are 5 parameters then it creates 4 directories with names of 4 parameters, in... (2 Replies)
Discussion started by: bolones
2 Replies

5. Linux

mkdir command

Hi all, i am new to Linux and need some help. I used the command: mkdir super Directory super is created When i try to change to this directory using: cd /super I get: bash: cd: /super: No such file or directory when i use: rm super I get: rm: cannot remove 'super': Is a directory What... (5 Replies)
Discussion started by: Deside
5 Replies

6. Shell Programming and Scripting

Help me with mkdir command

Hi, please help me with this small script #!/bin/sh curdir=`pwd` n20=$curdir'/n20/' msat=$curdir'/n20/msat/' if then mkdir $n20 fi if then mkdir $msat fi for a in 30 40 50 60 70 80 do (4 Replies)
Discussion started by: Dark2Bright
4 Replies

7. UNIX for Advanced & Expert Users

mkdir

Is there ant way to increase max number of folders in the directory from the 32766: Problem UFS: shell>mkdir mmm mkdir: mmm: Too many links But there are no links, just folders. shell>ls | wc -l 32766 (3 Replies)
Discussion started by: mirusnet
3 Replies

8. Shell Programming and Scripting

mkdir

Hi, I look for a script to create 150 directories : d000 d001 d002 ... ... d149 would you help me please ? I think it would be for i mkdir d$i Many thanks. PS : #uname -a AIX fserver 3 5 0050691A4C00 (2 Replies)
Discussion started by: big123456
2 Replies

9. Linux

install vs mkdir

I'm sitting here late at night, reading linux from scratch, and I come to this part: http://lfs.osuosl.org/lfs/view/stable/chapter06/creatingdirs.html my question to you, the all knowing unix.com'ers is this: what's the difference between using the install command as they do, and using the... (1 Reply)
Discussion started by: thmnetwork
1 Replies
Login or Register to Ask a Question