Problems with IF Else ??!!


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Problems with IF Else ??!!
# 1  
Old 11-13-2010
Problems with IF Else ??!!

I have written the following code in cygwin to create directories in windows based on the parameter passed.

Code:
 
echo $1 > fullpath
path1=`awk -F / '{print $1}' $fullpath
path2=`awk -F / '{print $2}' $fullpath
if [ $path1 = "IDS" ]
then
    if [ -d IDS ]
    then
        if [ -d "$path2" ]
        then
            continue
        else
            mkdir ./$path1/$path2
        fi
    else
        mkdir ./$path1
        mkdir ./$path1/$path2
    fi
else 
    if [ -d $path1 ]
    then 
        continue
    else
        mkdir ./$path1
    fi

This scrfipt just hangs without throwing any error...Can any one help?

Last edited by pludi; 11-13-2010 at 10:30 AM.. Reason: fixed indentation for readability
# 2  
Old 11-13-2010
Hi, you cannot assign a value to a variable like that on line #1. Therefore the variable is empty on line 2 and thus awk waits patiently for user input. If you indent your code properly, you'll spot some more problems. Don't use continue in an if statement...
# 3  
Old 11-13-2010
2 things:
  1. You're missing one fi
  2. mkdir has a -p switch that will create all necessary parent directories if they don't already exist
# 4  
Old 11-13-2010
Code:
#!/bin/ksh
echo $1 > fullpath
path1=`awk -F/ '{print $1}' fullpath`
path2=`awk -F/ '{print $2}' fullpath`
if [ "$path1" = "IDS" ]
then
    if [ -d IDS ]
    then
        if [ -d "$path2" ]
        then
        continue
        else
        mkdir ./$path1/$path2
        fi
    else
        mkdir ./$path1
        mkdir ./$path1/$path2
    fi
else 
    if [ -d $path1 ]
    then 
        continue
    else
        mkdir ./$path1
    fi
fi

OR use mkdir -p option
Code:
mkdir -p $1


Last edited by anurag.singh; 11-13-2010 at 10:44 AM..
This User Gave Thanks to anurag.singh For This Post:
# 5  
Old 11-13-2010
Just for interest. Can't see the point of saving "$1" into a file called "fullpath". The O/P may be confused between files and Environment Variables. In this context it makes sense to save the script runtime parameter "$1" into a named Environment Variable "$fullpath" to make the script more readable.

If the purpose of the script is to create a directory and subdirectory under the current directory the simple solution of "mkdir -p" is good. In this example we are presumably learning to think ahead and test for the potential problem before generating an error. i.e. good programming practice.


Code:
fullpath="$1"          # Save supplied parameter number 1
# Error if parameter not supplied
if [ "${fullpath}""X" = "X" ]
then
      echo "Usage: scriptname fullpath"
      exit 2
fi
# Break parameter down to two components
path1=`echo "${fullpath}"|awk -F"/" '{print $1}'`
path2=`echo "${fullpath}"|awk -F"/" '{print $2}'`
# Create first level directory if not present
if [ ! -d "${path1}" ]
then
      echo "Creatings: ${path1}"
      mkdir "${path1}"
fi
cd "${path1}"
# Create second level directory if not present
if [ ! -d "${path2}" ]
then
      echo "Creating: ${path2}"
      mkdir "${path2}"
fi

 
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

About ps -ef and if-else problems

I'm new in Shell Programming and Scripting, I would like to ask some questions. ps -ef | grep $appNAme | grep -v grep <-- what will it return when it find a process is running? return 1 or 0 if then exit 1 <--- if = 0 , run this ? else continue <--- if = 1 , run this ?... (5 Replies)
Discussion started by: LoAlex
5 Replies

2. Shell Programming and Scripting

If/then problems

#! /bin/bash # ask what the user would like to do CMD=$CMD MBA=$MB RS=$RS CT=$CT echo echo -n "What would you like to do?? REMEMBER WHEN PROGRAMMING ICP's TO SELECT CORRECT COMMAND ACCORDING TO NECCESSARY TYPE CODE! Please enter a command ct = program ctek ... (5 Replies)
Discussion started by: tdalyman
5 Replies

3. SuSE

Problems!!

good friends I am new to linux and I have the following TELNET service problem entering data devo telnet to a Windows server 2003 server and passes will not let me since the move to this server by telnet tells me the characters and thus invalidates me income, I have a service application... (1 Reply)
Discussion started by: pepetico
1 Replies

4. Shell Programming and Scripting

Problems with $?

Hello, I have the following piece of code that tries to retrieve the result of a .sh: . $HOME/prueba/Scripts/Recogida/recogida_sedra.sh resultado=$? echo "el resultado es : $resultado" if ; then echo "Se va a preprocesar los archivos" In the code of recogida.sh I have the... (8 Replies)
Discussion started by: danietepa
8 Replies

5. UNIX for Dummies Questions & Answers

Problems with using less

Hello, I am having problems with using less on Linux version 2.6.18-92.1.17.el5 (brewbuilder@hs20-bc1-7.build.redhat.com) (gcc version 4.1.2 20071124 (Red Hat 4.1.2-42)). I am using csh but have the same problems on bash. If I pipe something to less it works perfectly i.e. cat file | less... (9 Replies)
Discussion started by: z1dane
9 Replies

6. UNIX for Dummies Questions & Answers

problems with If

I'm having problems uses "if" it works fine when i do this. #!/bin/sh a= 10 qw= 2 w= 20 { if && ;then echo 3 fi } However if i try to do #!/bin/sh a= 10 (5 Replies)
Discussion started by: THM
5 Replies

7. UNIX for Advanced & Expert Users

Problems with Last

Hi, I,ve a Unixware 7.1.3 working correctly for two years ago, since a several weeks I've a problem with the command last . The information that this command return is : For example : 1.- The user root , time login : 12:15 h, time logoff 12:15 h (the real time is 14:00). Connected time is... (3 Replies)
Discussion started by: By_Jam
3 Replies

8. UNIX for Dummies Questions & Answers

Few problems

Hi how can i do this? 1) shell script which writes data and time on to a file if filesystem exceeds 70% of space. 2) make entry to cron table to run a script every 15 mins. and can anyone expplain or demonstrate the difference between variables used in inside a function and outside a... (3 Replies)
Discussion started by: vivekshankar
3 Replies

9. UNIX for Advanced & Expert Users

'make' problems (compliation problems?)

I'm trying to compile and install both most recent version of 'make' and the most recent version of 'openssh' on my Sparc20. I've run into the following problems... and I don't know what they mean. Can someone please help me resolve these issues? I'm using the 'make' version that was... (5 Replies)
Discussion started by: xyyz
5 Replies
Login or Register to Ask a Question