[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: test-boolean tool



El Fri, Jul 30, 2004 at 03:02:32PM -0700, ms419@freezone.co.uk va escriure:
> Is there a tool to test strings as boolean values? For instance, 
> test-booean true, True, TRUE, T, yes, on, 1, succeed, but test-boolean 
> false, False, FALSE, F, no, off, 0, fail?
> 
> I'm writing an init script in which a tool like this would be useful. 
> I've looked at other init scripts, which simply test if ["$VAR" == true 
> ], but some packages use "true", some use "yes", etc.
> 
> If a tool doesn't exist, I think it would be useful in many places and 
> simple to create. I think there should be a modular tool for this 
> common task (like the start-stop-daemon or debhelper tools).
> 
> One problem I can't resolve is what it should do on test-boolean 
> notaboolean. Better than resulting in some default behavior (true or 
> false) on invalid input, would be resulting in an exception. However, 
> my foreseen application is in a shell script, the if statement of which 
> (AFAIK) won't result in exceptions (an error is failure is false).
> 
> Any suggestions?

  Why do you need a tool? A simple shell function like the following is enough:

    test_boolean() {
      case $1 in
        "true"|"True"|"TRUE"|"T"|"yes"|"Yes"|"YES"|"1") return 0 ;;
        "false"|"False"|"FALSE"|"F"|"no"|"No"|"NO"|"0") return 1 ;;
        *) return 2 ;;
      esac
    }
 
  With this function you can test the exit status if you need to distinguish
  between "true" ($? after the function call is 0), "false" ($? equals 1) or
  "unknown" ($? equals 2) or you can use it as always if you only care about
  "true":

    if test_boolean $X; then
      echo "True" 
    else
      echo "False or Unknown"
    fi

  Greetings,

    Sergio.
  
-- 
Sergio Talens-Oliag <sto@uv.es>            <http://www.uv.es/~sto/>
Key fingerprint = 29DF 544F 1BD9 548C 8F15 86EF 6770 052B B8C1 FA69

Attachment: signature.asc
Description: Digital signature


Reply to: