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

Re: [Omaha.pm] [olug] Test for integer in bash



John Hobbs wrote:
First, does anyone know of a better way to test for an integer in bash
than this?

#!/bin/bash

function testInt {
  echo "Testing: $1"
  echo "$1" | grep ^[0-9]*$ > /dev/null

  if [ "$?" -eq 0 ]; then
    echo 'yep, it should be an integer.'
  else
    echo 'nope, dunno what it is.'
  fi
  echo
}

testInt 900
testInt foobar
testInt

Unless you're intentionally failing negative integers you might want to throw an optional - onto the front of your regex.

Cheers,

j


A Perl solution:

$ cat j
900
foobar
-900
$ perl -nle 'print $_, ": ", /^-?\d+$/ ? "yep" : "nope"' j
900: yep
foobar: nope
-900: yep