To customize the behaviour of a script at run time, you can give it any number o
f arguments on the command line.
The shell expands wildcards and makes variable and command substitutions as norm al, then parses the resulting words by whitespace (actually special variable $IFS), and places the resulting text strings into the positional variables as follows: $0, $1, $2, ... $9 The first 9 arguments are made available directly as $1-$9. To access more than 9, use shift, or $*, $@. The variable $0 contains the name of the script itself.
${10}, ${11}, ... Positional arguments greater than 9 are set by ksh and bash. Remember to use bra ces to refer to them. shift discard $1 and renumber all the other variables. "shift N" will shift N argument s at once. $# contains the number of arguments that were set (not including $0). $* contains all of the arguments in a single string, with one space separating them . $@ similar to $*, but if used in quotes, it effectively quotes each argument and ke eps them separate. If any argument contains whitespace, the distinction is important. e.g. if the argument list is: a1 a2 "a3 which contains spaces" a4 then: $1=a1, $2=a2, $3=a3 which contains spaces, $4=a4 and: $*=a1 a2 a3 which contains spaces a4 and: "$@"="a1" "a2" "a3 which contains spaces" "a4" Only using the form "$@" preserves quoted arguments. If the arguments are being passed from the script directly to some other program, it may make a big difference to the meaning. Example: ex7 display, text Setting new positional arguments The set command, followed by a set of arguments, creates a new set of positional arguments. This is often used, assuming the original arguments are no longer needed, to parse a set of words (possibly using different field se parators). Arguments may be reset any number of times. Example: ex2 display, text Example: pickrandom display, text Selects a random file from a directory. Uses the ksh RANDOM feature.