Multiple if within while loop ksh


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
# 1  
Multiple if within while loop ksh

Hi All,

I'm trying to write while loop with multiple if conditions. Each and every if condition with different variables. whenever one if condition fails i have remove the file
from filename and have to pick another file and loop should exit until the last file found in filename. Please help how to write a ksh shell script for that. Below i have given code what i tried

Thanks in advance.!!!

example:
Code:
#### here filename contain XXXX_YYYY_ZZZZ_DDD.txt as example
while read filename
#splitting a file without extension
full_filename=$filename
noextension=${full_filename%.*}
extension="${full_filename##*.}"

####assigning a patterns to different variable

echo "$noextension"|awk -F'_' '{ print NF-1 }' > countpattern

##### First fi######
if [ "$countpattern" -eq 5 ] ; then
A=$(echo $noextension|cut -d'_' -f1)
B=$(echo $noextension|cut -d'_' -f2)
C=$(echo $noextension|cut -d'_' -f3)
D=$(echo $noextension|cut -d'_' -f4)
E=$(echo $noextension|cut -d'_' -f5)
fi

####Second If########
if [ ! $extension=txt-a $A=HELP] || [ ! $extension=csv -a ! A =HELP ]
then
UPDATE TABLE ########################
rm full_filename
fi

####third if#####
if [ ! $C = "WE" ]
then
UPDATE TABLE ########################
rm full_filename
fi

# 2  
How about
Code:
TMP=csvtxt                                                                     # extension template
while read filename
  do    IFS="._" read -A IARR <<< $filename                                    # split filename into array containing elements and extension (${IARR[-1]})
        if [ ! "${TMP/${IARR[-1]}}" = "$TMP" -a ! "${IARR[0]}" = "HELP" ] ||   # first condition  - former $A is ${IARR[0]} now
           [ ! "${IARR[2]}" = "WE" ]                                           # second condition
          then  # update table                                                 # do whatever necessary
                echo rm $filename                                              # remove echo to remove file
        fi
  done < input

# 3  
${IARR[-1]} is bash-4.
ksh (and bash-3) need ${IARR[${#IARR[@]}-1]}

read -A and <<< require ksh93 - do not work with the older ksh88.
This User Gave Thanks to MadeInGermany For This Post:
# 4  
ksh93+, (ksh was the shell the OP specified), also supports negative indexes, to indicate elements from right to left (probably after a certain revision level).
zsh also does this, but the first index of arrays is 1, rather than 0..
bash requires version 4.3 or higher
This User Gave Thanks to Scrutinizer For This Post:
# 5  
Here is one for all ksh versions:
Code:
#### here filename contain XXXX_YYYY_ZZZZ_DDD.txt as example
while read filename
do

### split filename on "."
extension="${filename##*.}"
[ "$extension" = "$filename" ] && extension=""
noextension=${filename%.*}
[ "$noextension" = "$filename" ] && noextension=""

### split noextension on "_" to AR[0] AR[1] ... AR[lenAR-1]
## ksh93 takes:
# IFS="_" read -A AR <<< "$noextension"
##
## ksh88 needs:
oIFS=$IFS
IFS="_"
set -f
set -A AR $noextension
IFS=$oIFS
set +f
##
lenAR=${#AR[@]}

### Conditions...
if
  [ "$extension" != "txt" -a "${AR[0]}" = "HELP" ] ||
  [ "$extension" != "csv" -a "${AR[0]}" != HELP ] ||
  [ "$ARR[2]" != "WE" ]
then
# UPDATE TABLE ########################
   echo rm "$filename"
fi

done

Remove the echo to run the rm command.
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Urgent.!!! Multiple if within while loop ksh

Hi All, I'm trying to write while loop with multiple if conditions. Each and every if condition with different variables. whenever one if condition fails i have remove the file from filename and have to pick another file and loop should exit until the last file found in filename. Please help... (2 Replies)
Discussion started by: Kayal
2 Replies

2. Shell Programming and Scripting

Help with loop in ksh script

Hi, I am new to UNIX. I am working on a script where it takes the input and produces a desired output and it works fine for one instance. Input(One Instance): CREATE TABLE TAB1 ( COL1, COL2 ); CREATE UNIQUE INDEX XPKTAB1 ( COL1 )TAB1; Output: CREATE TABLE TAB1 ( COL1, COL2... (8 Replies)
Discussion started by: varun2327
8 Replies

3. Shell Programming and Scripting

Reset while loop to loop same file multiple times

Hi, I want to read file multiple times. Right now i am using while loop but that is not working. ex. While read line do while read line2 do echo stmt1 #processing some data based on data., done < file2.txt done < file1.txt # This will have 10... (4 Replies)
Discussion started by: tmalik79
4 Replies

4. Shell Programming and Scripting

Output in for loop (ksh)

Hi , I'm writing the for loop script in home directory and wanted to get the files from /etc/data directory. #!/bin/ksh file_nm="/etc/dat" for test_data in $file_nm/fln* do echo "$test_data" done the code is executing successfully , but in the output it is showing ... (6 Replies)
Discussion started by: smile689
6 Replies

5. Shell Programming and Scripting

ksh for loop

Any reason why this thing doesn't works in Korn Shell for (( expr1; expr2; expr3 )) do ..... ... repeat all statements between do and done until expr2 is TRUE Done Rgds, TS (4 Replies)
Discussion started by: targetshell
4 Replies

6. Shell Programming and Scripting

ksh loop

I need an echo "hit enter" running every 3 seconds till user hit enter key. 10x (1 Reply)
Discussion started by: LiorAmitai
1 Replies

7. Shell Programming and Scripting

Why does my for loop does not work right in ksh?

hi all, i have a for loop statement in my ksh code. it only returns the first value retrieved not the value for the other rows. ex: acct_id value = returned value in the for loop 1 = 1 2 = 1 (instead of 2) 3 = ... (1 Reply)
Discussion started by: ryukishin_17
1 Replies

8. Shell Programming and Scripting

Help with While loop in KSH

Hi, I want to write a while loop like this can any one say me whats wrong with my loop USAGE="Usage: Mail.ksh" integer i=3 while ((1<i<=3)) do . . . . (( CMD_JUL = LSD_JUL - i )) CUR_MAINT_DATE=$(julian2date ${CMD_JUL}) . . . i=i-1 done (1 Reply)
Discussion started by: bhagya2340
1 Replies

9. Shell Programming and Scripting

For loop in ksh..Please help..

Hi ALL, I need to take some command line arguments for my script and then want to run a function for each argument.I thought of using for loop as below, but its not working , can some one please help... #!/bin/ksh lpar1=$1 lpar2=$2 lpar3=$3 lpar4=$4 lpar5=$5 echo "$lpar1" >>lpar.txt echo... (4 Replies)
Discussion started by: prashant43
4 Replies

10. Shell Programming and Scripting

ksh while loop

hi all, got this silly problem and i just can't seem to make sense of the error message its is saying 1400: cannot open. its my first time at writing a while loop but tried all sorts to get it working without success. #!usr/bin/ksh integer max=1400 set file="afilename" integer i=1 ... (3 Replies)
Discussion started by: scriptingmani
3 Replies

Featured Tech Videos