Array in ksh with if-else


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Array in ksh with if-else
# 1  
Old 02-14-2012
Data Array in ksh with if-else

Hi All,

My Requirement is as follows:
1. User will input Source Sytem Code as input.
2. I have source system codes as 11, 34, 56, 99, 45 etc.

OS Version: SunOS 5.8 Generic_117350-62 sun4u sparc SUNW,Sun-Fire-V890

My code is like...
Code:
  echo 'Source System Code: \c'
  read varSSCode # Reading Source System Code
if [ "varSSCode" == "11" -o "varSSCode" == "56" -o "varSSCode" == "93" ]; then
    ls -ltr; cut -d~ -f14,37,48 data_file|sort|uniq -c; wc -l data_file
else
    ls -ltr; cut -d~ -f12,37,48 data_file|sort|uniq -c; wc -l data_file

So I want the following code
Code:
 if [ "varSSCode" == "11" -o "varSSCode" == "56" -o "varSSCode" == "93" ];

to be in array (if possible).

Like...
If varSSCode in that array then
do this and this...

Please suggest.

Cheers,
Saps.

Last edited by saps19; 02-14-2012 at 09:00 AM.. Reason: Typo
# 2  
Old 02-14-2012
First, there are missing $ in your script :
Code:
if [ "$varSSCode" == "11" -o "$varSSCode" == "56" -o "$varSSCode" == "93" ]; then


A possible solution (using a list of values, not an array) :
Code:
#!/usr/bin/ksh

validCodes=",11,56,93,"

read varSSCode?"Source System Code: "
if [[ "${validCodes}" == *,${varSSCode},* ]]
then
    echo "ok. ls -ltr; cut -d~ -f14,37,48 data_file|sort|uniq -c; wc -l data_file"
else
    echo "KO! ls -ltr; cut -d~ -f12,37,48 data_file|sort|uniq -c; wc -l data_file"
fi

Jean-Pierre.
This User Gave Thanks to aigles For This Post:
# 3  
Old 02-14-2012
Code:
read varSSCode?"Source System Code: "
case $varSSCode in
     11|56|93) echo " code OK" ; F='-f14,37,48' ;;
     *) echo "code KO" ; F='-f12,37,48' ;;
esac
ls -ltr
eval cut -d~ $F data_file|sort|uniq -c
wc -l data_file


Last edited by ctsgnb; 02-14-2012 at 11:01 AM..
# 4  
Old 02-17-2012
Quote:
Originally Posted by aigles
First, there are missing $ in your script :
Code:
if [ "$varSSCode" == "11" -o "$varSSCode" == "56" -o "$varSSCode" == "93" ]; then

Thanks for the heads-up.. I really missed it..!

Quote:
A possible solution (using a list of values, not an array) :
Code:
#!/usr/bin/ksh

validCodes=",11,56,93,"

read varSSCode?"Source System Code: "
if [[ "${validCodes}" == *,${varSSCode},* ]]

Jean-Pierre.
Apologies for the delay in replying. Due to unavailability of UAT Server, I was not able to test the script.

But now, I've tested it and works fine with list of values.

Thanks a lot Jean.

Cheers,
Saps
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Assigning * as value in a ksh array

I want to extract each and single character from a password string and put it in an array. I tried this : set -A password "echo $passwd | awk '{for (i=1; i<=length($1); i++) printf "%s ",substr($1,i,1)}'` It's working as long that the password string doesn't contains any * I tried a few... (5 Replies)
Discussion started by: ce9888
5 Replies

2. Shell Programming and Scripting

[Solved] KSH: Array/If Help

RedHat 5 KSH I am creating an array, and then using case to go through and count for specific words. Then the count gets stored as an expression. string='ftp rcp rsh telnet ftp ftp' set -A myarray $string FTPCOUNT="0" for command in ${myarray} do case $command in ftp) FTPCOUNT=`expr... (2 Replies)
Discussion started by: nitrobass24
2 Replies

3. UNIX and Linux Applications

Array in Ksh

Hi Guys, My code is something like this set -A A1 1 7 13 19 set -A A2 2 8 14 20 set -A A3 3 9 15 21 echo "Enter a number" read number for i in 0 2 3 4 do if }" ] then do something elif }" ] then do something elif }" ] then do something (4 Replies)
Discussion started by: jeanzibbin
4 Replies

4. Shell Programming and Scripting

ksh insert element in array

Hi all, I need help with the following scenario in ksh. If the number of elements contained by arrayA is 11 I need to insert a zero as the element arrayA then print all arrayA elements separated by comma. Appreciate your help. (9 Replies)
Discussion started by: ejianu
9 Replies

5. UNIX for Dummies Questions & Answers

Need help with KSH Array assignment

The following command is only intermittently successful, depends on the data I give it: set -A ImageShifts_sorted `awk '/START_SECTION IMAGE_DEFINITION/ {getline;getline;getline;getline; print $2"-"$3}' temp.ASCII | sort -u` My Error: set: -1: unknown option Finally, If I run that... (3 Replies)
Discussion started by: nerdcurious
3 Replies

6. UNIX for Advanced & Expert Users

Array copy in ksh

Hi all, Following code in ksh is giving error: fileLimit=5 func(){ dir=&quot;$1&quot; format=&quot;$2&quot; array=&quot;$3&quot; i=0 ls -lrt $format | tail -${fileLimit} | while read f_det; do files=&quot;${f_det},&quot; ((i+=1)) done eval $(echo set -A $array '&quot;${files}&quot;') } func &quot;.&quot; &quot;*.pl&quot; &quot;a&quot; echo... (10 Replies)
Discussion started by: PRKS
10 Replies

7. Shell Programming and Scripting

Ksh array solution.

I was wondering if ksh supported arrays. I have a script that may work with several hosts. I'd like a means of knowing how many hosts I'm working with and an easy way to access them (as variables) in a loop. I'm assuming there's some kind of foreach in shell scripting. (1 Reply)
Discussion started by: mrwatkin
1 Replies

8. Shell Programming and Scripting

using array in ksh

hi all, need help with putting names in an array, i have a few servers which i look up by doing a 'find . -name "*.pid' and the format of the output is like following : ./servername/myserver.pid i was wondering how can i iterate through and store each name in one array my code is... (1 Reply)
Discussion started by: cesarNZ
1 Replies

9. Shell Programming and Scripting

[KSH] Split string into array

Hi, Is there any way to convert a string into an array in KSH? In other words I want to split the string like this: STRING="one two three four" into an array of 4 values splitting on white space. The array should be similar to the one that would be created with the following command: ... (3 Replies)
Discussion started by: piooooter
3 Replies

10. Shell Programming and Scripting

Tokenising into array (KSH)

Greetings all, I've been getting a little frustrated over my scripts as I'm not too experienced with powerful commands such as awk and sed. Hope to find some guidance here. I need to extract the names of all directories within a specified directory, grab their names and then place each name... (5 Replies)
Discussion started by: rockysfr
5 Replies
Login or Register to Ask a Question