Visit Our UNIX and Linux User Community


namerefs alternative for KSH88


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting namerefs alternative for KSH88
# 1  
Old 09-24-2012
namerefs alternative for KSH88

I have to use KSH88, so going to BASH, perl etc. is not an option.

Below is a much simplified verison of what I am doing (aka ignore my cut command and i not increasing) Smilie

Code:
i=1
BIGSTRING="one two three four five six seven eight"

while [[ $i -le 10 ]]; do 
typeset "STRING$i=`echo $BIGSTRING| cut -d' ' -f1-50`"
typeset -n NEWVAR="STRING$i"
do_stuff_here_w_NEWVAR
done

Namerefs are not available in KSH88
So how else i can accomplish the same thing? I need to echo a string through cut and set it to an increasing variable name based on $i then call the new variable.

Last edited by Corona688; 09-24-2012 at 06:47 PM..
# 2  
Old 09-24-2012
I have no idea what that broken snippet of code is supposed to be doing. I'm not also sure what you mean by nameref's, since you don't appear to be doing anything that sets any variables except the ones you already told me to ignore...

I'll take a wild guess.

One way to set arbitrary variable names is to use read.

Code:
read var$NAME <<EOF
some text
EOF

# 3  
Old 09-24-2012
nameref is an alias for typedef in ksh93.

As far as I can see he is creating an array in a non-standard way.

Code:
BIGSTRING='1 2 3 4 5 777 last'
# the simplest way in ksh88
set -A myarray $BIGSTRING
echo ${myarray[0]}  # first element
arrlen=${#myarray[*]}
echo ${myarray[ arrlen -1 ] } # last element in the array.

# 4  
Old 09-25-2012
Quoting from The New Kornshell Command and Programming Language by Bolsky and Korn (copyright 1995):
Quote:
It is often desirable to pass the name of a variable rather than the value of the variable, as an argument to a function. A reference variable provides a mechanism for providing a local name for this variable. A reference variable is created with typeset -n, or with the preset alias nameref. The name of a reference variable must be an identifier. The value of the variable at the time the typeset -n attribute is specified, defines the variable that will be referenced by the reference variable. For instance, if the variable foo is assigned the value bar, and foo is given the name reference attribute, then each assignment to foo will be an assignment to bar.
There is probably a way to get replace the use of name references using eval, but I have other things I need to do tonight and don't have time to prepare and test an example tonight.

Sorry,
Don
This User Gave Thanks to Don Cragun For This Post:
# 5  
Old 09-25-2012
You could try:
Code:
$ STRING1='ABC    XYZ'
$ NEWVAR=STRING1
$ eval 'echo NEWVAR IS ACTUALLY "$'$NEWVAR'"'
NEWVAR IS ACTUALLY ABC    XYZ

as a workaround. But, if I were you, I would change my shell to one that supports namerefs...
This User Gave Thanks to elixir_sinari For This Post:
# 6  
Old 09-25-2012
The standard approach would be to use eval, but that needs to be done carefully, since it could introduce security risks..

What OS and version are you using?
# 7  
Old 09-25-2012
Here is what i ended up with after doing some research on uses of eval.
Code:
i=1
BIGSTRING="one two three four five six seven eight"

while [[ $i -le 10 ]]; do 
typeset "STRING$i=`echo $BIGSTRING| cut -d' ' -f1-50`"
# typeset -n NEWVAR="STRING$i"
eval "NEWVAR=\$STRING$i"
do_stuff_here_w_NEWVAR
done

Quote:
Originally Posted by Scrutinizer
The standard approach would be to use eval, but that needs to be done carefully, since it could introduce security risks..

What OS and version are you using?
What do you mean security risk?
I am running on RHEL5 (KSH93) & HPUX, SOL5.10 (KSH88)

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. OS X (Apple)

FFT for the AMIGA through ksh88 shell.

I don't know if anyone is interested but I have been meddling with FFT for the AMIGA. (Sadly we AMIGAns don't have these luxuries through any scripting language. Below is a Python snippet that uses the builtin 'cmath' module to work with the lowly Python 2.0.1 for the AMIGA. It is part of a... (0 Replies)
Discussion started by: wisecracker
0 Replies

2. Solaris

Solaris scripting problem with ksh88

Hello, I want to pick a random element from a list, and created these 2 lines, which work very well in ksh93. Unfortunately, I get this "bad substitution" message in ksh88. I'm wondering if there's an equivalent to the second line of my script.. or if I have to install ksh93 to make this... (8 Replies)
Discussion started by: gfroute
8 Replies

3. Shell Programming and Scripting

FTP script in ksh88

Hi I tried the following code to FTP the files from test server to dev #!/bin/ksh DST=/home/files cd $DST ftp -inv 'test_serv101' << EOF quote USER test quote PASS test # File Path on test server cd /etc/home/Or_Files ascii mget curMonth* $DST quit EOF when i try the above code it... (4 Replies)
Discussion started by: smile689
4 Replies

4. Shell Programming and Scripting

Zip size is different though files are same in ksh88

I'm using Ksh88 . I've last day files in one directory and current month files in another directory , having the same naming convention. Now i need to compare these folders size , if there is no change in these files then no action to be performed else if there is a change then i need to call... (1 Reply)
Discussion started by: smile689
1 Replies

5. Shell Programming and Scripting

Comparing Strings in ksh88

Hi I tried the following string comparison script in Ksh88 #!/bin/ksh str1='aC' str2='ABC' if then echo "Equal" else echo "Not Equal" fi Though str1 and str2 are not equal the script output says Equal . Please correct me Thanks (2 Replies)
Discussion started by: smile689
2 Replies

6. Shell Programming and Scripting

[ksh88 and awk] Number of fields with a value.

Hi, With: # VALUES="one~two~~~" # echo $VALUES | awk 'BEGIN {FS="~"} {print NF}' 5 I can determine the number of fields. How to determine the number of fields with a value ? In this case 2. Thanks in advance, ejdv (6 Replies)
Discussion started by: ejdv
6 Replies

7. Shell Programming and Scripting

Download AT&T ksh88 ?

Hello, I need ksh88 for my linux system - and I don't want pdksh. Possible to get original ksh 88 binaries or source ? (I don't need ksh93 which is available) thanks Vilius (1 Reply)
Discussion started by: vilius
1 Replies

8. Shell Programming and Scripting

Substring in ksh88 ?

Hello, ksh88 doesn't support ${var:x:y}. Any alternatives to get substring ? thanks Vilius (2 Replies)
Discussion started by: vilius
2 Replies

9. Shell Programming and Scripting

ksh88 or ksh93

Hi all! Does anybody know how can I check if any UNIX installation has implemented ksh88 or ksh93? Thanks in advance. NÚstor. (3 Replies)
Discussion started by: Nestor
3 Replies

10. Shell Programming and Scripting

ksh88 - curses

I was wondering if there is anyway to use the curses library with ksh88. I saw Shell Curses function library which says I can use /usr/local/functions/shellcurses on ksh93 but I am on ksh88. I am on a HP-UX box. (0 Replies)
Discussion started by: IMTheNachoMan
0 Replies

Featured Tech Videos