27.08.2015 Views

Advanced Bash−Scripting Guide

Advanced Bash-Scripting Guide - Nicku.org

Advanced Bash-Scripting Guide - Nicku.org

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Advanced</strong> <strong>Bash−Scripting</strong> <strong>Guide</strong><br />

alt_return_test 256<br />

echo "return value = $Return_Val" # 256<br />

alt_return_test 257<br />

echo "return value = $Return_Val" # 257<br />

alt_return_test 25701<br />

echo "return value = $Return_Val" #25701<br />

Example 23−6. Comparing two large integers<br />

#!/bin/bash<br />

# max2.sh: Maximum of two LARGE integers.<br />

# This is the previous "max.sh" example,<br />

# modified to permit comparing large integers.<br />

EQUAL=0<br />

# Return value if both params equal.<br />

MAXRETVAL=256 # Maximum positive return value from a function.<br />

E_PARAM_ERR=−99999 # Parameter error.<br />

E_NPARAM_ERR=99999 # "Normalized" parameter error.<br />

max2 ()<br />

# Returns larger of two numbers.<br />

{<br />

if [ −z "$2" ]<br />

then<br />

return $E_PARAM_ERR<br />

fi<br />

if [ "$1" −eq "$2" ]<br />

then<br />

return $EQUAL<br />

else<br />

if [ "$1" −gt "$2" ]<br />

then<br />

retval=$1<br />

else<br />

retval=$2<br />

fi<br />

fi<br />

# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− #<br />

# This is a workaround to enable returning a large integer<br />

# from this function.<br />

if [ "$retval" −gt "$MAXRETVAL" ] # If out of range,<br />

then<br />

# then<br />

let "retval = (( 0 − $retval ))" # adjust to a negative value.<br />

# (( 0 − $VALUE )) changes the sign of VALUE.<br />

fi<br />

# Large *negative* return values permitted, fortunately.<br />

# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− #<br />

return $retval<br />

}<br />

max2 33001 33997<br />

return_val=$?<br />

# −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− #<br />

if [ "$return_val" −lt 0 ]<br />

# If "adjusted" negative number,<br />

Chapter 23. Functions 281

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!