\\
Corning Community College
\\
UNIX/Linux Fundamentals
\\
\\
EoCE alternate question activity: Analyzing Shell Script Logic
\\
\\
~~TOC~~
======Objective======
To gain additional familiarity with shell scripting.
======Background======
Shell scripting enables you countless possibilities for automating tasks, both menial and sophisticated in nature.
However, like any new tool or concept, one needs to spend time with, and play with things, to get a better understanding.
======Exploration======
Analyze, poke at, and get running the following script on Lab46:
#!/bin/bash
month="`date +%m`"
year="`date +%Y`"
day="`date +%d`"
today="${year}${month}${day}"
csem=""
for item in `wget -q -O - http://www.corning-cc.edu/future/acacalendar/ \
| grep 'Semester begins' | sed 's/\.\.*/:/g' \
| sed 's/<[/a-z0-9]*>//g' | sed 's/:Semester begins : /:/g' \
| sed 's/:First Summer Session begins : /:/g' \
| egrep -o '[FWS][a-z]* [0-9]{4} S[a-z]*:[A-Z][a-z]* [1-9][0-9]?' \
| tr 'WSF' 'wsf' | sed 's/ \([1-9][0-9][0-9][0-9]\) semester/\1/g' \
| sed 's/ /*/g'`; do
sm="`echo $item | cut -d':' -f1`"
out=$(date --date "`echo $item \
| sed 's/^[a-z]*\([0-9]*\):\([A-Za-z]*\)\*\([0-9]*\)$/\2 \3 \1/'`" \
+%Y%m%d)
if [ "$today" -ge "$out" ]; then
csem="$sm"
fi
done
echo "$csem"
if [ -z "$csem" ]; then
status=1
else
status=0
fi
exit $status
======Questions======
- What is the purpose of this script?
- What is the general flow of operations that takes place in this script?
- Explain what **today="${year}${month}${day}"** does.
- What does **sed 's/<[/a-z0-9]*>//g'** appear to do?
- What are the raw **$item** values being iterated in the for loop?
- What is the purpose of the **if** statement?
- Any potential bugs that could effect proper operation?
- What is the significance of exiting with a value of **0** vs. that of **1**?