Extracting unknown positional parameter in Bourne shell


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Extracting unknown positional parameter in Bourne shell
# 1  
Old 02-12-2012
Extracting unknown positional parameter in Bourne shell

I have a variable that contains the number of a positional parameter. There is no way of knowing what number this may be, although it is guaranteed to correspond with a valid parameter.

In BASH I could just use ${@[$var]} to extract that argument. But in a Bourne shell the best I can come up with is to use a for-loop with a counter as in this sample script (where the first parameter is the position to extract from those that follow):

Code:
#!/bin/sh

[ ${#@} -lt 2 ] && exit

x=$1
shift

i=1
for v in $@; do
   [ $i = $x ] && echo $v
   i=$(( i + 1 ))
done


Is there any easier way to do this?

Thanks.
# 2  
Old 02-12-2012
Try:
Code:
eval v=\${$x}
echo "$v"


Last edited by Scrutinizer; 02-12-2012 at 09:40 PM..
This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 02-13-2012
I always forget about eval, too much time spent in other languages where similar functions are only desperate last resorts.

That worked perfectly, thanks.
# 4  
Old 02-13-2012
You're welcome. Yes, also in Shell one should think twice before using eval in certain situations, so that it does not leave a security hole. Those curly brackets are important in this case BTW. If you leave them out then if the parameter would become $10 for example, that would get evaluated to $1 with a trailing zero, whereas ${10} would give the right result.

Last edited by Scrutinizer; 02-13-2012 at 01:24 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Cybersecurity

'Shell Shock' vulnerability in Bourne shell

A severe vulnerability was discovered in Bourne shell. Just google for: bash vulnerability ... for more details. (5 Replies)
Discussion started by: Cochise
5 Replies

2. Homework & Coursework Questions

Positional Parameters Shell Scripting

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: STEP 1: Create a Bash shell script (myscript) inside the a2 directory. The script should allow the user to pass... (3 Replies)
Discussion started by: tazb
3 Replies

3. Shell Programming and Scripting

Bourne shell & Korn shell

Could some one tell me the difference btw Bourne shell and the Kshell? Which is more flexible and reliable in terms of portability and efficiency. When i type the following command .. $ echo $SHELL yields me /bin/sh Does this tells me that I am in Bourne shell. If yes, how can i get... (6 Replies)
Discussion started by: bobby1015
6 Replies

4. Shell Programming and Scripting

How to activate Korn Shell functionnalities in Bourne Shell

Hi All I have writing a Korn Shell script to execute it on many of our servers. But some servers don't have Korn Shell installed, they use Borne Shell. Some operations like calculation don't work : cat ${file1} | tail -$((${num1}-${num2})) > ${file2} Is it possible to activate Korn Shell... (3 Replies)
Discussion started by: madmat
3 Replies

5. Shell Programming and Scripting

Define Positional Parameter Range Awk

Hello All, I am trying to clean up a poorly looking awk command. I am searching for a way to define a range of positional parameters. I may not be searching for the correct syntax. Example: awk ' /14:3*/ {print $2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13}' app.log Is it possible to shorten... (4 Replies)
Discussion started by: jaysunn
4 Replies

6. Shell Programming and Scripting

Positional parameter passing

Hi All, When passing parameters to a sheel script, the parameters are referenced by their positions such as $1 for first parameter, $2 for second parameter. these positional values can only have values ranging from $0-$9 (0,1,2,3...9). I have a shell script meant to accept 20 parameters. for... (3 Replies)
Discussion started by: ogologoma
3 Replies

7. Shell Programming and Scripting

I need to understand the differences between the bash shell and the Bourne shell

I do not claim to be an expert, but I have done things with scripts that whole teams of folks have said can not be done. Of course they should have said we do not have the intestinal fortitude to git-r-done. I have been using UNIX actually HPUX since 1992. Unfortunately my old computer died and... (7 Replies)
Discussion started by: awk_sed_hello
7 Replies

8. Shell Programming and Scripting

extracting parameter from file

Hi I have file 128 BES-Exchange BES-Exchange/BES-Exchange.vmx winNetEnterpriseGuest vmx-04 144 BES-SVR BES-SVR/BES-SVR.vmx winNetEnterpriseGuest vmx-04 176 BES AD BES-AD/BES AD.vmx ... (9 Replies)
Discussion started by: bp_vardhaman
9 Replies

9. Shell Programming and Scripting

ls positional parameter

Hi . I am new to Unix. So i have a tough time. we are using Korn Shell. I have a scenario where i have three files namely xxx01,xxx02,xxx03. Now when i write ls xxx*|wc -l output is 3. But then i write `ls $1|wc -l` and pass xxx* as positional parameter (sh yyy.sh xxx*) output is xxx01. other... (1 Reply)
Discussion started by: vasuarjula
1 Replies

10. AIX

ls positional parameter

Hi . I am new to Unix. So i have a tough time. we are using Korn Shell. I have a scenario where i have three files namely xxx01,xxx02,xxx03. Now when i write ls xxx*|wc -l output is 3. But then i write `ls $1|wc -l` and pass xxx* as positional parameter (sh yyy.sh xxx*) output is xxx01. other... (1 Reply)
Discussion started by: vasuarjula
1 Replies
Login or Register to Ask a Question