Accessing Shell Script Arguments
The so-called positional parameters represent a shell script's command-line arguments. They also represent a function's arguments within shell functions. Individual arguments are named by integer numbers. For historical reasons, you have to enclose the number in braces if it's greater than nine:
echo first arg is $1
echo tenth arg is ${10}Special "variables" provide access to the total number of arguments that were passed, and to all the arguments at once. We provide the details later, in Section 6.1.2.2.
Suppose you want to know what terminal a particular user is using.
Well, once again, you could use a plain who command and manually scan the output.
However, that's difficult and error prone, especially on systems with
lots of users. This time what you want to do is search through who's output for a particular user. Well,
anytime you want to do searching, that's a job for the grep command, which
prints lines matching the pattern given in its first argument. Suppose
you're looking for user betsy because
you really need that flag you ordered from
her:
$ who | grep betsy
Where is betsy?
betsy pts/3 Dec 27 11:07 (flags-r-us.example.com)Now that we know how to find a particular user, we can put the commands into a script, with the script's first argument being the username we want to find:
$cat > finduserCreate new file#! /bin/sh# finduser --- see if user named by first argument is logged inwho | grep $1^DEnd-of-file $chmod +x finduserMake it ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access