04-09-2007
ksh on HP-UX uses 32 bit arithmetic and the largest integer it can handle is 2147483648. bc can perform arithmetic on any size number. If a is less than b, then the expression a-b will be negative. Negative numbers will have a minus sign as the first character.
c=$(echo $a - $b | bc)
if [[ $c = -* ]] ; then
In your case, both numbers have the same number of digits. If that is guaranteed to be true, an alpha compare will work:
if [[ $a < $b ]] ; then
This User Gave Thanks to Perderabo For This Post:
10 More Discussions You Might Find Interesting
1. Cybersecurity
hi there , :cool:
um facing a problem with my root passwd
i want to set my root password and when i do i get the following ::
#
# passwd
passwd: Changing password for root
New Password:
Re-enter new Password:
passwd(SYSTEM): They don't match.
Please try again
New Password:... (6 Replies)
Discussion started by: badrali
6 Replies
2. UNIX for Dummies Questions & Answers
I have created a server monitor program in Java that connects to servers via SSH and constantly refreshes the new server load every 3 mins. The problem is that even though it is a Java app running shell commands to get the load info, the commands still appear in 'history'.
The question is.. is... (1 Reply)
Discussion started by: AndrewSH
1 Replies
3. Shell Programming and Scripting
Hi,
I was trying to do a string comparison using if. However, the comparison result is getting treated as a executable statement. I'm not sure where I'm making the mistake!
$ typeset TEST_VAR='YUP'
$ if ; then echo 'Got It!'; fi;
ksh: : not found.
Any help is appreciated! (3 Replies)
Discussion started by: waterdrop
3 Replies
4. Web Development
Hi all,
I recently changed the name of my hostname from 'abc123' to 'abc456' (as an example).
I then added a user in my mysql database with the new host and removed references to the old users and hostname.
The strange thing is though, a process using the database still uses the old... (1 Reply)
Discussion started by: muay_tb
1 Replies
5. Shell Programming and Scripting
Hello all,
I'm having an infuriating issue with number comparison. Basically I've written a script that runs in cygwin that SSH's to 4 servers, figures out a success percentage and if it is less than a certain point, triggers an alarm. I've managed to get it to connect to the servers, figure out... (5 Replies)
Discussion started by: DeCoTwc
5 Replies
6. Shell Programming and Scripting
So, I'm making a little awk script that generates a range-based histogram of a set of numbers. I've stumbled onto a strange thing. Toward the end of the process, I have this test:
if ( bindex < s )
"bindex" is the "index" of my "bin" (the array element that gets incremented whenever a... (2 Replies)
Discussion started by: treesloth
2 Replies
7. Shell Programming and Scripting
hi all experts,
i=1;
while
do
echo $i
$i=$i+1
done
can I use
min=2
max=5
if (($min > $ max))
then
else (2 Replies)
Discussion started by: hamnsan
2 Replies
8. Shell Programming and Scripting
Can someone please help me with a unix logic for below. I tried to get the desired output by using change capture condition in Datastage but its not working properly. i have two files file1, file2 as below.
file1
ROW_NO VEND_NO CODE AIR_D OCEAN_D
----------------------------------------
1 ... (3 Replies)
Discussion started by: JSKOBS
3 Replies
9. Shell Programming and Scripting
Hi All,
I am trying to compare two negative numbers using awk on linux.But it is giving me wrong result.Same code is working perfectly on solaris.
print ((0+new_price) < MIN_PRICE)
e.g If I try to compare -1.32(new_price) and -500(min_price) using "<" operator, output is 1 i.e true.
... (5 Replies)
Discussion started by: Rashmee
5 Replies
10. Shell Programming and Scripting
more works.sh
#!/bin/ksh
{
print "From: reportgenerator@myserver.com"
print "To: randomguy@myfirm.com"
print "MIME-Version: 1.0"
print "Content-Type: text/html"
print "Subject: Disk Report"
print "<body>"
print "<table border=1>"
... (3 Replies)
Discussion started by: mohtashims
3 Replies
LEARN ABOUT PLAN9
integer
integer(3pm) Perl Programmers Reference Guide integer(3pm)
NAME
integer - Perl pragma to use integer arithmetic instead of floating point
SYNOPSIS
use integer;
$x = 10/3;
# $x is now 3, not 3.33333333333333333
DESCRIPTION
This tells the compiler to use integer operations from here to the end of the enclosing BLOCK. On many machines, this doesn't matter a
great deal for most computations, but on those without floating point hardware, it can make a big difference in performance.
Note that this only affects how most of the arithmetic and relational operators handle their operands and results, and not how all numbers
everywhere are treated. Specifically, "use integer;" has the effect that before computing the results of the arithmetic operators (+, -,
*, /, %, +=, -=, *=, /=, %=, and unary minus), the comparison operators (<, <=, >, >=, ==, !=, <=>), and the bitwise operators (|, &, ^,
<<, >>, |=, &=, ^=, <<=, >>=), the operands have their fractional portions truncated (or floored), and the result will have its fractional
portion truncated as well. In addition, the range of operands and results is restricted to that of familiar two's complement integers,
i.e., -(2**31) .. (2**31-1) on 32-bit architectures, and -(2**63) .. (2**63-1) on 64-bit architectures. For example, this code
use integer;
$x = 5.8;
$y = 2.5;
$z = 2.7;
$a = 2**31 - 1; # Largest positive integer on 32-bit machines
$, = ", ";
print $x, -$x, $x + $y, $x - $y, $x / $y, $x * $y, $y == $z, $a, $a + 1;
will print: 5.8, -5, 7, 3, 2, 10, 1, 2147483647, -2147483648
Note that $x is still printed as having its true non-integer value of 5.8 since it wasn't operated on. And note too the wrap-around from
the largest positive integer to the largest negative one. Also, arguments passed to functions and the values returned by them are not
affected by "use integer;". E.g.,
srand(1.5);
$, = ", ";
print sin(.5), cos(.5), atan2(1,2), sqrt(2), rand(10);
will give the same result with or without "use integer;" The power operator "**" is also not affected, so that 2 ** .5 is always the
square root of 2. Now, it so happens that the pre- and post- increment and decrement operators, ++ and --, are not affected by "use
integer;" either. Some may rightly consider this to be a bug -- but at least it's a long-standing one.
Finally, "use integer;" also has an additional affect on the bitwise operators. Normally, the operands and results are treated as unsigned
integers, but with "use integer;" the operands and results are signed. This means, among other things, that ~0 is -1, and -2 & -5 is -6.
Internally, native integer arithmetic (as provided by your C compiler) is used. This means that Perl's own semantics for arithmetic
operations may not be preserved. One common source of trouble is the modulus of negative numbers, which Perl does one way, but your
hardware may do another.
% perl -le 'print (4 % -3)'
-2
% perl -Minteger -le 'print (4 % -3)'
1
See "Pragmatic Modules" in perlmodlib, "Integer Arithmetic" in perlop
perl v5.12.1 2010-04-26 integer(3pm)