1.zmore
#! /bin/shNOARGS=65NOTFOUND=66NOTGZIP=67
if [ $# -eq 0 ]then echo "Usage: `basename $0` filename" >&2 exit $NOARGSfi
filename=$1if [ ! -f "$filename" ]then echo "File $filename not found!" >&2 exit $NOTFOUNDfi
if [ ${filename##*.} != "gz" ]then echo "File $1 is not a gzipped file!" exit $NOTGZIPfi
zcat $1|moreexit $?
2.求最大公约数
#! /bin/shARGS=2E_BADARGS=65
if [ $# -ne "$ARGS" ]then echo "Uage: `basename $0` first-number second-number" exit $E_BADARGSfi
gcd(){ dividend=$1 divisor=$2 remainder=1 until [ "$remainder" -eq 0 ] do let "remainder = $dividend % divisor" dividend=$divisor divisor=$remainder done
}
gcd $1 $2echo;echo "GCD of $1 and $2 = $dividend";echo
exit 0
3.算术操作符
#! /bin/shn=1; echo -n "$n "let "n = $n + 1"echo -n "$n "
: $((n = $n + 1))echo -n "$n "
((n = n + 1))echo -n "$n "
n=$(($n + 1))echo -n "$n "
: $[ n = $n + 1 ]echo -n "$n "
n=$[ n + 1 ]echo -n "$n "
let "n++"echo -n "$n "
((n++))echo -n "$n "
: $[ n++ ]echo -n "$n "echoexit 0
4.IFS与空白字符
#! /bin/shoutput_args_one_per_line(){ for arg do echo "[$arg]" done}
echo;echo "IFS=/" /""echo "-----------"
IFS=" "var="a b c "output_args_one_per_line $var
echo;echo "IFS=:"echo "-------------------"
IFS=:var=":a::b:c:::"output_args_one_per_line $var
echo exit 0
5.$REPLY
#! /bin/shecho echo -n "What is your favorite vegetable? "readecho "Your favorite vegetable is $REPLY."
echo
echo -n "What is your favorite fruit?"read fruitecho "Your favorite fruit is $fruit."echo "but..."
echo "Value of /$REPLY is still $REPLY."echoexit 0
$REPLY ----接受最后一个read
6.$SECONDS
#! /bin/shTIME_LIMIT=10INTERVAL=1
echoecho "Hit Control-C to exit before $TIME_LIMIT seconds."echo
while [ "$SECONDS" -le "$TIME_LIMIT" ]do if [ "$SECONDS" -eq 1 ] then units=second else units=seconds fi echo "This script has been running $SECONDS $units." sleep $INTERVALdone
echo -e "/a"
exit 0