If loop is not working


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users If loop is not working
# 1  
Old 08-11-2008
If loop is not working

The following piece of code is not running because it is fails to go inside the if condition. i want to create a directory if there is no directory in the input path. i am using Linux, by CENT. Please help.


echo " Enter the path where you u want to extract the tar"
read EXTRACT_PATH
ls -ld $EXTRACT_PATH 2>>/dev/null | if [ $? -ne 0 ]
then
mkdir $EXTRACT_PATH
echo "new directory creadted......"
fi

Last edited by toanilsharma1; 08-11-2008 at 12:15 PM..
# 2  
Old 08-11-2008
Code:
echo " Enter the path where you u want to extract the tar"
read EXTRACT_PATH
if [ ! -d $EXTRACT_PATH ]	
then
   mkdir $EXTRACT_PATH
   echo "new directory creadted......"
fi

# 3  
Old 08-11-2008
Hammer & Screwdriver Unclear on your logic

You are doing an ls -ld directory_name, and then checking the exit status. The ls -ld command will always (I think anyway - test for yourself) return a 0 (zero) for the error condition. The ls can run, and you are sending errors elsewhere anyway.

Perhaps a better way would be something like
Code:
if [ -d $EXTRACT_PATH ]
  then
    echo "yep, a directory"
  else
    echo "no, it is not"
fi

# 4  
Old 08-11-2008
What is the reason to test for the existance of the directory here? Use the -p option of mkdir.

Regards
# 5  
Old 08-12-2008
Piping into the if is also a problem; by definition, the exit status of a pipeline is the exit status of the last command of the pipeline, so false; false | if [ $? == 1 ] is not well-defined (and at least in my Bash, doesn't do anything; the error code is always zero at that point).
# 6  
Old 08-14-2008
Tools

Thank you guys, all of you have given very relevent and precise answers to my query.
although i am a J2EE app developer, and some how i am into UNIX now and that was first shell script, so i had lot of doubts, and u guys cleared it now.

joeyg,Image
reason being i was doing ls -ld directory_name is, if there is a directory then it gives exit staus 0 and if not it gives 1, based on this value i was creating a directory.
but
era, is write pipeline is treated as command by shell and if it is feeded to "if" statement it always gives exit 0.
thanks era.Image

Franklin52Image
i am making a Debian package to install and configure sun directory, opensso, openssl, so there i have to check at some places whather directory exists or not if not then i have to make it for the installation purposes.

thanks guys, i will look forward to your valuable help again.
cheers bye.Image
# 7  
Old 08-15-2008
I think Franklin's point was that you don't have to make it a conditional at all; mkdir -p /tmp will run fine even if /tmp already exists, so basically that's the whole script for you.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

For-loop not working

Hello all, I would like to unzip some files with a for-loop. Is there anyone who could tell me how I should do this - in a correct way? for file in $(ls); do echo gzip -d < $file | tar xf -; done The problem is the pipe - I believe. But how could I do it? I need it for the command... (4 Replies)
Discussion started by: API
4 Replies

2. UNIX for Dummies Questions & Answers

for loop not working

Hi, I have ten different files to extract. so I thought for loop will help me. but it's not working for me. Please advice what I am doing wrong. for INCI in 1 2 3 4 5 6 7 8 9 10 do tar -xvf Update_INCI11.10.002_lnx86_1of10.tar done second file name is... (3 Replies)
Discussion started by: samnyc
3 Replies

3. Programming

C While Loop not working like C++

Hi new to C give me a hand thank. do { bzero(input,256); printf("Please enter the country name!"); scanf("%s",input); //& character is essential for scanf(), %f = float, %399s as the last character to be the null character ('\0'). } while... (5 Replies)
Discussion started by: GQiang
5 Replies

4. Shell Programming and Scripting

For loop not working

Hi All, For loop in ksh not working if it was given in the following method. simple script: for i in {1..4} do echo $i done Output: {1..4} Even below also not working :( Script: for (( c=1; c<=5; c++ )) do echo "Welcome $c times..." done Output: ./x.sh: 0403-057 Syntax error... (13 Replies)
Discussion started by: girish_satyam
13 Replies

5. Shell Programming and Scripting

while loop not working

hi everyone i am facing a very strange problem . please help me why my while loop is not working. below is my code #!/bin/ksh file=RCMC_ABC_999_080924_210813.DAR echo ${file} value=001 count=10 echo "abc" echo ${count} value=$((${value} + 1 )) echo ${value} while ] do echo... (3 Replies)
Discussion started by: aishsimplesweet
3 Replies

6. Shell Programming and Scripting

While loop not working

here we go.. While loop is not working file.. It also invokes one more shell scripts for which parameters need to passed on. while read line do #### #### We want to have a logfile for each load #### PLog="${LogDir}/${Script}.log"; #### ... (5 Replies)
Discussion started by: premkumardr
5 Replies

7. UNIX for Dummies Questions & Answers

If then else loop not working

If then else segment of below code is not working. For each filename code is displaying output for if part as well as else part. Please help its urgent. for usercusttop in `echo ${filename}|sort|uniq|cut -c 1-${actualwordcount}` do ... (2 Replies)
Discussion started by: findprakash
2 Replies

8. Shell Programming and Scripting

For loop not working...! :(

Could some one help me on this... For loop is working...! for x in $i do for y in $j do z=`echo $y | awk '{print $2}'` if then FS=`/usr/bin/echo $y` echo $FS >>$Basic_location/out.csv fi done CPRT="Cpoyright @ BTOIDCIM" done (3 Replies)
Discussion started by: bullz26
3 Replies

9. Shell Programming and Scripting

if loop is not working

Hello i am trying to remove a line using an input file , but this depends upon user interaction here is the sample #!/bin/sh echo "Please enter whether you want to remove Profile" read value1 if ;then sed /movie/d temp.txt> temp3.txt else echo "Script didnot remove profile" fi ... (3 Replies)
Discussion started by: ranga27
3 Replies

10. Shell Programming and Scripting

Loop not working

Apologize if this is doesn't come under this group. I have a small script to find out users who last logged in to check there mail. (Tru 64 4.0, Netscape mail 3.6) -----> cat $1|awk -F: '$2=="SMTP-Accept" && $5~/@maildomain/ {s=$5;u++;las=substr($1)} END {for (i in u) {print... (2 Replies)
Discussion started by: nitin
2 Replies
Login or Register to Ask a Question