![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| UNIX for Dummies Questions & Answers If you're not sure where to post a UNIX or Linux question, post it here. All UNIX and Linux newbies welcome !! |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| ls positional parameter | vasuarjula | AIX | 1 | 02-13-2008 07:49 PM |
| Positional parameters | shalu@ibm | UNIX for Dummies Questions & Answers | 2 | 11-22-2007 04:58 AM |
| positional grep | Manish Jha | Shell Programming and Scripting | 1 | 05-16-2006 11:33 AM |
| Positional Parameters | Shell Programming and Scripting | 2 | 09-26-2003 10:51 AM | |
|
|
Submit Tools | LinkBack | Thread Tools | Display Modes |
|
#1
|
|||
|
|||
|
Positional Parameters
Hello,
I am using the Bourne shell. I am trying to understand the concept of positional parameters. I do understand that positional parameters: 1. Are initialized by shell 2. Have a max of 9 parameters ($1 to $9) 3. Have no limit on the number of arguments 4. Can be rearranged with the shift command Can someone please give me a simple example to help me better understand how to use positional parameters? Thanks, Eric |
| Forum Sponsor | ||
|
|
|
#2
|
||||
|
||||
|
Code:
1. Are initialized by shell
They are not initialized by the shell. Rather they pick up the values from the arguments passed to a shell script.
2. Have a max of 9 parameters ($1 to $9)
Not true. It can go beyond 9. After $9, the next positional parameter will be accessed as ${10}, ${11} .. et al.
3. Have no limit on the number of arguments
This is true. Bit this statement is contradicting to what you mentioned in point 2.
4. Can be rearranged with the shift command
The postional arguments gets shifted one place to the left when you make one shift call. i.e. $1 will get the value that was held by $2, $2 will get the value that was held by $3.. so on and so forth..
$0 never gets shifted.
Read the man bash vino |
|
#3
|
|||
|
|||
|
Code:
1. Are initialized by shell They are not initialized by the shell. Rather they pick up the values from the arguments passed to a shell script. For example, if I do the following: Code:
$> var1=one $> var2=two $> var3=three $> echo $var1 one $> echo $var2 two $> echo $var3 three Is this a good example that will help me understand the concept? I am trying to write a few small examples to help me see exactly what is happening. Code:
2. Have a max of 9 parameters ($1 to $9)
Not true. It can go beyond 9. After $9, the next positional parameter will be accessed as ${10}, ${11} .. et al.
Code:
3. Have no limit on the number of arguments This is true. Bit this statement is contradicting to what you mentioned in point 2. Code:
4. Can be rearranged with the shift command The postional arguments gets shifted one place to the left when you make one shift call. i.e. $1 will get the value that was held by $2, $2 will get the value that was held by $3.. so on and so forth.. $0 never gets shifted. Thank you, Eric |
|
#4
|
||||
|
||||
|
There are a few examples on the use of positional parameters - Positional Parameters
|
|
#5
|
||||
|
||||
|
The Bourne shell does not support ${10}. Here is an example where I tried it:
Code:
$ set one two three four five six seven eight nine ten eleven
$ echo $1
one
$ echo ${1}
one
$ echo $9
nine
$ echo ${10}
bad substitution
$ shift
$ echo $9
ten
$
|
|
#6
|
|||
|
|||
|
That's good to know.
Thanks for the clarification. Eric |
|
#7
|
|||
|
|||
|
OK, after reading the linked lesson (Lesson 13: Positional Parameters), I have written a test program. This program is called "positional_parameters":
Code:
set -vx set echo "Positional Parameters" # The following commented lines do not work. # Is it because I am using the Bourne Shell? # if["$1"!=""]; # then echo "Positional parameter 1 contains something." # else echo "Positional parameter 1 is empty." # fi # if[ $# -gt 0 ]; then # echo "Your command line contains $# arguments" # else echo "Your command line contains no arguments" # fi echo '$0 = ' $0 echo '$1 = ' $1 echo '$2 = ' $2 echo '$3 = ' $3 banner $1 $2 $3 banner "$1 $2 $3" banner "$*" banner "$@" # mailtolist=someName@someDomain.com mailtolist=someName@someDomain.com mail mailtolist < testing set +vx Code:
banner testing banner 1 2 3 4 Code:
mailtolist... User unknown Is it possible for the mailtolist variable to contain more than one e-mail address? I would like to try to invoke the positional_parameters program from the command line and send the contents of my testing file to my e-mail address. Would this be the correct command? Code:
$> positional_parameters testing Do I need to use command substitution to test it? I appreciate the feedback. I am enjoying what I am learning so far. Thank you, Eric Last edited by ericelysia; 10-22-2005 at 08:05 AM. |
|||
| Google The UNIX and Linux Forums |