#!/bin/sh -u # Syntax: $0 [args...] # Count and display on STDERR each argument to this shell script. # It also displays the command name, which is often referred to as # "Argument Zero" ($0) but is never counted as a command argument. # All output appears on "standard error", not "standard output". # To make this script executable, use: chmod +x argv.sh # To run the script in the current directory: ./argv.sh a b c # -Ian! D. Allen - idallen@idallen.ca - www.idallen.com # Set the search path for the shell to be the standard places. # Set the character collating sequence to be numeric ASCII/C standard. # Set the language and character set to be ASCII/C standard. # Set the umask to be non-restrictive and friendly to others. # PATH=/bin:/usr/bin ; export PATH LC_COLLATE=C ; export LC_COLLATE LANG=C ; export LANG umask 022 # The $0 variable contains the name of this script, sometimes called # "argument zero". It is not an argument to the script itself. # The $# variable contains a count of the number of command line arguments. # The script name is not counted as an "argument" to the script; # only arguments 1 and up are counted as arguments to the script. # The syntax "1>&2" means "on this line, send what would normally appear on # stdout (unit 1) to stderr (unit 2)" - the output of the line goes to stderr. # echo 1>&2 "$0: This script has $# command line arguments." echo 1>&2 "Argument 0 is [$0]" # Now display all of the command line arguments (if any). # These are the real command line arguments to this script. # count=0 for arg do count=$((count+1)) echo 1>&2 "Argument $count is [$arg]" done exit 0 # zero is a good/success return status for a command