OPS435 Lecture 7 - Bash
Today we practiced some more with algorithm design, functions, and arithmetic.
In-class examples:
errorfunction.sh:
#!/bin/bash
printUsageAndExit()
{
echo "========================================="
echo "Usage: $0 num1 num2"
echo " Where num1 and num2 are integer numbers"
echo "========================================="
exit 1
}
if [ -z $1 ]
then
printUsageAndExit
fi
if [ -z $2 ]
then
printUsageAndExit
fi
if [ `echo $1 | sed -n '/^[0-9]*$/p' | wc -l` -ne 1 ]
then
printUsageAndExit
fi
if [ `echo $2 | sed -n '/^[0-9]*$/p' | wc -l` -ne 1 ]
then
printUsageAndExit
fi
echo Sum of first two arguments is: $(($1 + $2))
cowsay.sh:
#!/bin/bash
STRINGTOPRINT=$1
STRLEN=`echo -n $STRINGTOPRINT | wc -c`
printBubbleLine()
{
echo -n " "
for NUM in `seq $(($STRLEN + 2))`
do
echo -n "$1"
done
echo
}
printBubbleLine "_"
echo "< $STRINGTOPRINT >"
printBubbleLine "-"
echo " \ ^__^"
echo " \ (oo)\_______"
echo " (__)\ )\/\\"
echo " ||----w |"
echo " || ||"
safecopy.sh:
#!/bin/bash
COPYTODIR=$1
# Not valid characers in a filename:
# < > : " / \ | ? *
isValidFilename()
{
NAME=$1
if echo $NAME | grep "<" > /dev/null
then
return 1
elif echo $NAME | grep '>' > /dev/null
then
return 1
elif echo $NAME | grep ':' > /dev/null
then
return 1
elif echo $NAME | grep '"' > /dev/null
then
return 1
elif echo $NAME | grep '/' > /dev/null
then
return 1
elif echo $NAME | grep '\\' > /dev/null
then
return 1
elif echo $NAME | grep '|' > /dev/null
then
return 1
elif echo $NAME | grep '?' > /dev/null
then
return 1
elif echo $NAME | grep '*' > /dev/null
then
return 1
fi
return 0
}
for FILE in *
do
if isValidFilename "$FILE"
then
echo "$FILE is good"
else
echo "$FILE is bad"
fi
done
#cp -v $COPYFROMDIR/* $COPYTODIR/