diff --git a/lab03/args.bash b/lab03/args.bash
new file mode 100755
index 0000000000000000000000000000000000000000..804ba7b8344369bb8573e05680add0fd737bc367
--- /dev/null
+++ b/lab03/args.bash
@@ -0,0 +1,87 @@
+#!/bin/bash
+# args - shows how to look at command-line args
+#
+# Kurt Schmidt
+# 1/04
+#
+# NOTES: Run w/quoted input, like:
+# args.bash a "b c" d
+#
+
+debugOn="n"
+
+read -p "Do you want to see the script as it executes? (y/[n]) => " \
+ debugOn
+if [ "$debugOn" == "y" -o "$debugOn" == "Y" ] ; then
+ set -x # very useful switch to the set command
+fi
+
+echo "You passed in $# arguments"
+
+if [ -z $1 ] ; then
+ echo -e "\nHey, try passing some arguments in this time!\n"
+ exit 1
+fi
+
+if (( $# < 3 )) ; then
+ echo -e "\nOkay, at least 3 arguments. Make it mildly interesting.\n"
+ exit 2
+fi
+
+echo -e "\nOkay, \$0, the name of the script, is: $0"
+
+echo -e "\nHere are the command line args:\n\t$*"
+
+echo -e "\nOne way of going through the args:"
+echo "$1 $2 $3 ..."
+
+echo -e "\nBe careful! Only works for single digits. Past 9 this is better:"
+echo "${1} ${2} ${3} ..."
+
+echo -e "\nWe could loop over the arguments directly (\$*):"
+i=0
+for arg in $* ; do
+ (( i+=1 ))
+ echo -e "$i\t$arg "
+done
+echo
+
+echo -e "\nWe could loop over the arguments directly (\"\$*\"):"
+i=0
+for arg in "$*" ; do
+ (( i+=1 ))
+ echo -e "$i\t$arg "
+done
+echo
+
+echo -e "\nNot so good. We could try this (\$@):"
+i=0
+for arg in $@ ; do
+ (( i+=1 ))
+ echo -e "$i\t$arg "
+done
+echo
+
+echo -e "\nNot so good. We could try this (\"\$@\"):"
+i=0
+for arg in "$@" ; do
+ (( i+=1 ))
+ echo -e "$i\t$arg "
+done
+echo
+
+echo -e "\nOr, we could use the shift built-in command,"
+echo -e "(but we lose them when we're done):"
+argList="$*" # save the list for later, maybe
+
+i=0
+while [ ! -z "$1" ] ; do
+ (( i+=1 ))
+ echo -e "$i\t$1"
+ shift
+done
+echo
+
+
+echo -e "\nSee, now \$1 is: \"$1\" All gone."
+
diff --git a/lab03/count.bash b/lab03/count.bash
new file mode 100755
index 0000000000000000000000000000000000000000..43655a43f88b20261186e35ccf50388930702e33
--- /dev/null
+++ b/lab03/count.bash
@@ -0,0 +1,22 @@
+#!/bin/bash
+# args - shows how to look at command-line args
+#
+# Hanh Do Phung (Teddy)
+# 04/17/2019
+#
+# NOTES: This program prints the filename, number of lines, number of words to stdout for each file in the working directory
+
+for file in *
+do
+ echo "$file $(cat $file | wc -l -w)"
+done
+
+
+
+
+
+#for f in *; do cat "$f"; done
+#This test for directory
+
+
+
diff --git a/lab03/eg.bash b/lab03/eg.bash
new file mode 100755
index 0000000000000000000000000000000000000000..ac68e3a931ca3bb167fc64f3b7565ac96623b574
--- /dev/null
+++ b/lab03/eg.bash
@@ -0,0 +1,167 @@
+#!/bin/bash
+# eg.bash - just shows examples of the basic components of bash scripting
+#
+# Kurt Schmidt
+# 1/04
+#
+# Platform: Linux 2.6.18.6
+#
+# EDITOR: tabstop=2, cols=80
+#
+# This is a comment
+#
+
+listFile="listOfOpenDirs"
+
+debugOn="n"
+
+read -p "Do you want to see the script as it executes? (y/[n]) => " debugOn
+if [ "$debugOn" == "y" -o "$debugOn" == "Y" ] ; then
+ set -x # very useful switch to the set command
+fi
+
+# You can run simple commands:
+
+echo -e "Hello $USER\n"
+
+ # find all .html files (just files, not directories or links):
+find . -type f -name "*.html" -print
+
+ # find *all* html files (.htm, .html, .HTM, .HTML):
+find . -type f -name "*.[hH][tT][mM]*" -print
+
+ # find all files modifed in the last day:
+find . -type f -mtime -1 -print
+
+ # find all the emails in your default mail directory that mention Heidi,
+ # save to file
+find ~/.Maildir -type f -name '*.html' -exec grep Heidi {} \; -print > heidi.list
+
+ # find and delete all backups left by vim (*~) in all subdirectories:
+find . -name "*~" -exec \rm {} \; -print
+
+ # find files out in /tmp that should be cleaned up, remove 'em
+#find /tmp -user $USER -mtime +1 -exec \rm -i -rf {} \;
+
+ # see if Kurt is grading (on this machine) ...
+ps -ef | grep kschmidt | grep grade
+
+# VARIABLES
+
+str1="hello" # Note that lack of spaces around the '='
+str2="World"
+
+echo -n "$str1 " # the -n suppresses the newline
+echo $str2
+
+str3="${str1}${str2}" # alternate form, nice when you don't want spaces
+echo -e "\t\t$str3" # the -e allows C-style escape characters in string
+
+echo
+# CONDITIONALS
+if [ "$str1" \> "$str2" ] ; then
+ echo "$str1 comes before $str2"
+else
+ echo "$str2 comes before $str1"
+fi
+
+if [[ "$str1" < "$str2" ]] ; then # note that caps come before lowercase
+ echo "$str1 comes before $str2"
+else
+ echo "$str2 comes before $str1"
+fi
+
+x=3 # integer arithmetic only
+y=5
+
+if (( x < y )) ; then
+ echo "x is less than y"
+ (( x = y + 2 ))
+elif (( x == y )) ; then
+ echo "x is equal to y"
+else
+ echo "x is greater than y"
+ (( y = x - 1 ))
+fi
+
+# Careful about base
+echo $((017))
+echo $((0x23))
+
+echo "x is now $x, and y is $y"
+
+echo
+# LOOPS
+
+ # Look for open class directories
+for user in cam23 rad44 kschmidt ; do
+ if [[ -r ~${user}/CS265 ]] ; then
+ echo $user >> $listFile
+ fi
+done
+
+cat $listFile
+
+if [[ -f $listFile ]] ; then
+ for user in $(cat $listFile) ; do
+ # for user in `cat $listFile` ; do
+ echo "Mailing $user..."
+ #mail -s "Close class directories!" $user < /dev/null
+ done
+fi
+
+resp="y"
+
+while [[ "$resp" == "y" ]] ; do
+ read -p "Would you like to continue this loop (y/n)? => " resp
+done
+
+resp="y"
+
+while [[ "$resp" != "n" && "$resp" != "N" ]] ; do
+ read -p "Would you like to continue this loop (y/n)? => " resp
+done
+
+
+ # a C-style for loop:
+for (( i=1; i<=10; i++ )) ; do
+ echo ${i} Q
+done
+
+echo -e "\nYou're welcome!\n"
+
+# FUNCTIONS
+
+ # Functions are nice, can be grouped into "include" files, and sourced
+ # when needed.
+
+
+function foo # this doesn't mean no args
+{
+ if [[ ! -d ~/tmp ]] ; then
+ mkdir ~/tmp
+ chmod 700 ~/tmp
+ fi
+
+ listFile="~/tmp/deleteMe" # be nasty to caller
+ echo "foo was here w/args $*" >> $listFile
+
+ local resp="notAnIssue" # local variable
+
+ for arg in "$@" ; do
+ echo $arg
+ done
+
+ echo "I'm returning 13, because I can"
+
+ return 13
+}
+
+ # to call the function:
+
+foo these are my args
+
+echo "foo returned $?"
+echo "\$listFile is now: $listFile"
+echo "\$resp is still: $resp"
+
diff --git a/lab03/rv.bash b/lab03/rv.bash
new file mode 100755
index 0000000000000000000000000000000000000000..df4bdfdae3e2b534d7685350c98fb6f09cee9c5b
--- /dev/null
+++ b/lab03/rv.bash
@@ -0,0 +1,14 @@
+#!/bin/bash
+# rv - just playing w/the exit command
+#
+# Kurt Schmidt
+# 1/04
+#
+
+if [[ -z $1 ]] ; then
+ echo -e "\nHey, try passing a numeric argument in this time!\n"
+ exit
+fi
+
+exit $1
+