To wait for someone to logout:
#!/bin/sh while who |grep -s $1 >/dev/null do sleep 60 done echo "$1 has logged out"
This script checks to see if the username given as an argument to the script is logged on. While they are, the script waits for 60 seconds before checking again. When it is found that the user is no longer logged on a message that they have logged out is displayed.
To declare when a file has been created:
#!/bin/sh until test -f $FILE do sleep 60 done echo "$FILE now exists"
This tests every 60 seconds until the filename represented by the variable $FILE exists. A message is then displayed.
To watch for someone to log in:
#!/bin/sh # make sure we pick up the correct commands PATH=/bin:/usr/bin # remember $# is number of positional arguments case $# in 1) ;; *) echo 'usage: watchfor username' ; exit 1 esac until who | grep -s "$1" >/dev/null do sleep 60 done echo "$1 has logged in"
If more than one username is given to the command watchfor the message
usage: watchfor username
is displayed and the command fails.