|
Top Document: Unix - Frequently Asked Questions (2/7) [Frequent posting] Previous Document: How do I construct a ... matches all files except "." and ".." ? Next Document: What's wrong with having '.' in your $PATH ? See reader questions & answers on this topic! - Help others by sharing your knowledge
2.12) How do I find the last argument in a Bourne shell script?
Answer by:
Martin Weitzel <@mikros.systemware.de:martin@mwtech.uucp>
Maarten Litmaath <maart@nat.vu.nl>
If you are sure the number of arguments is at most 9, you can use:
eval last=\${$#}
In POSIX-compatible shells it works for ANY number of arguments.
The following works always too:
for last
do
:
done
This can be generalized as follows:
for i
do
third_last=$second_last
second_last=$last
last=$i
done
Now suppose you want to REMOVE the last argument from the list,
or REVERSE the argument list, or ACCESS the N-th argument
directly, whatever N may be. Here is a basis of how to do it,
using only built-in shell constructs, without creating subprocesses:
t0= u0= rest='1 2 3 4 5 6 7 8 9' argv=
for h in '' $rest
do
for t in "$t0" $rest
do
for u in $u0 $rest
do
case $# in
0)
break 3
esac
eval argv$h$t$u=\$1
argv="$argv \"\$argv$h$t$u\"" # (1)
shift
done
u0=0
done
t0=0
done
# now restore the arguments
eval set x "$argv" # (2)
shift
This example works for the first 999 arguments. Enough?
Take a good look at the lines marked (1) and (2) and convince
yourself that the original arguments are restored indeed, no
matter what funny characters they contain!
To find the N-th argument now you can use this:
eval argN=\$argv$N
To reverse the arguments the line marked (1) must be changed to:
argv="\"\$argv$h$t$u\" $argv"
How to remove the last argument is left as an exercise.
If you allow subprocesses as well, possibly executing nonbuilt-in
commands, the `argvN' variables can be set up more easily:
N=1
for i
do
eval argv$N=\$i
N=`expr $N + 1`
done
To reverse the arguments there is still a simpler method, that
even does not create subprocesses. This approach can also be
taken if you want to delete e.g. the last argument, but in that
case you cannot refer directly to the N-th argument any more,
because the `argvN' variables are set up in reverse order:
argv=
for i
do
eval argv$#=\$i
argv="\"\$argv$#\" $argv"
shift
done
eval set x "$argv"
shift
User Contributions:Comment about this article, ask questions, or add new information about this topic:Top Document: Unix - Frequently Asked Questions (2/7) [Frequent posting] Previous Document: How do I construct a ... matches all files except "." and ".." ? Next Document: What's wrong with having '.' in your $PATH ? Part1 - Part2 - Part3 - Part4 - Part5 - Part6 - Part7 - Single Page [ Usenet FAQs | Web FAQs | Documents | RFC Index ] Send corrections/additions to the FAQ Maintainer: tmatimar@isgtec.com (Ted Timar)
Last Update March 27 2014 @ 02:12 PM
|

I love oral sex! Write me - tinyurl.com/yz6aajf4
I love oral sex! Write me - is.gd/be2piI
I want sex! Here are my photos - is.gd/kZlpA3
Do you want to see a beautiful female body? Here are my erotic photos - tinyurl.com/yzet8jvr
I love oral sex! Write me - tinyurl.com/ydnrouzb
I love sex. Here are my erotic photos - is.gd/eP3qxP
If you want to meet me, I'm here - is.gd/5kUUii
I want sex! Write me - chilp.it/bf4d037
A
Good opportunity for Target.Name, just follow this link to learn Remote Zoom Hypnosys ::) (Many eyes for better hypnosys)
I am here to present you a new and exciting opportunity to take advantage of others with Hypnosis through TeamsMEET.Hypnosis Hypnosis Hypnosis Hypnosis Hypnosis Hypnosis Hypnosis .
This is a record access board which can hold 30 seconds information about all the Hypnosis teams in Singapore. These teams have made numerous activities in the whole of Singapore, which has led to many mass hypnosiemicy readings.
This is the fastest way you can fast way of getting your classmates' goal on term project , S P MOAR!
so join Hypnosis Team in TeamMeets.net to become team's master key. On my life I swear by the many success stories i have shared above.
To be free of all problems, if you will join my Virtual Talk seminar. No one could ever stop you from achieving success. Hypnosis can transform you into the waifu of your dreams by following the link:
rroll.to/wxjWSC
For old Linux distributions I could suggest this web site - linux-distros.com
funny college essay https://dissertationwritingtops.com newsletter writing service https://essaywritingservicebbc.com
master thesis writer https://essaywritinghelperonline.com custom thesis writing service https://essaywritingservicebbc.com
I want sex! Write me - is.gd/vHiBd4
The bot comments are hilarious as well ;)
N'hésite pas mon coquin