Sponsored Content
Full Discussion: Problem with Maths
Top Forums Shell Programming and Scripting Problem with Maths Post 302070210 by Quesa on Monday 3rd of April 2006 06:30:31 AM
Old 04-03-2006
Problem with Maths

Heres a script i wrote as a bit of practise. What it does is insert a line in the middle of a file. The line being $1 and the file being $2


#!/bin/bash

rm tempfile
touch tempfile

count=1
linenum= `wc -l < $2`
if [ "$linenum" -eq 0 ]
then
echo $1 >> $2
else

even=`expr "$linenum" % 2`
if [ "$even" -eq 0 ]
then
midline=`expr "$linenum" / 2`
else
midline=`expr "$linenum" / 2`
midline=`expr "$midline" + 0.5`
fi

while [ "$linenum" -gt 0 ]
do
sed -n '$count p' $2 >> tempfile

if [ "$linenum" -eq "$midline" ]
then
echo $1 >> tempfile
fi

count=`expr "$count" + 1`
linenum=`expr "$linenum" - 1`
done
fi
cat tempfile > $2


However when I run this I get the following errors:

testscript: 0: command not found
testscript: [: : integer expression expected
expr: non-numeric argument
testscript: [: : integer expression expected
expr: non-numeric argument
expr: non-numeric argument
testscript: [: : integer expression expected

This would suggest that the expr argument does not have numbers in it. I know I have the variables in double quotes but this should not matter should it. Can anyone help me with any of these errors.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl - maths equation - need help

if input to the perl program is ' ( p * ((a+b) * (c+d))) + q ' it shuld give the output as ' pac + pad + pbc + pbd + q ' .can anyone suggest a way to do this ? (7 Replies)
Discussion started by: Anuj8584
7 Replies

2. AIX

user login problem & Files listing problem.

1) when user login to the server the session got colosed. How will resolve? 2) While firing the command ls -l we are not able to see the any files in the director. but over all view the file system using the command df -g it is showing 91% used. what will be the problem? Thanks in advance. (1 Reply)
Discussion started by: pernasivam
1 Replies

3. AIX

AIX OS problem? network problem?

Dear ALL. I installed AIX OS on customer sites. but Only one site is too slow when I connected telnet, ftp.. Ping is too fast. but telnet and FTP is not connected.. of course i check the configuration file on aix but it's normal. Do any Idea?? thanks in advance. - Jun - (3 Replies)
Discussion started by: Jeon Jun Seok
3 Replies

4. Shell Programming and Scripting

Maths with variables

Hello, I'm trying to write a while loop for a decimal value in tcsh which I know can't be done. Instead I want my increments to be one order of magnitude too large and then divide it by 10 when I use the variable. However, I don't know how to divide my variable and set it as another. set... (1 Reply)
Discussion started by: DFr0st
1 Replies

5. Shell Programming and Scripting

Using IF statements with maths where the input is not an integer

Hi All I've made a few scripts which using GDAL extract the value of a pixel within a given raster. The purpose is to work out the combine value of every pixel. I thought there may have been an easier way to do this but alas! The code below extracts the pixel value at position X Y. The... (3 Replies)
Discussion started by: StudentFitz
3 Replies

6. IP Networking

Problem with forwarding emails (SPF problem)

Hi, This is rather a question from a "user" than from a sys admin, but I think this forum is apropriate for the question. I have an adress with automatic email forwarding and for some senders (two hietherto), emails are bouncing. This has really created a lot of problems those two time so I... (0 Replies)
Discussion started by: carwe
0 Replies

7. Shell Programming and Scripting

Simple maths calculator loop.

Hi, I am trying to make a maths calculator that: 1. Prompts the user for a number. 2. Prompts the user for an operation (add, subtract, divide or multiply) 3. Prompts the user for a number. 4. Prompts the user for another operation (same as above) OR the option to get the result for the... (4 Replies)
Discussion started by: johnthebaptist
4 Replies

8. Shell Programming and Scripting

Maths in shell scripts

Hi, Need help on this. I need to increment a variable by 1 but retain as 2 characters. I am using expr to do additions: NEWSERIAL=`expr $SERIAL + 1` $SERIAL can range from 01-99. After adding "1", I need the result to be 2 characters, eg: 02+1 = 03. By default expr will truncate the... (4 Replies)
Discussion started by: vchee
4 Replies

9. UNIX for Dummies Questions & Answers

sed Or Grep Problem OR Terminal Problem?

I don't know if you guys get this problem sometimes at Terminal but I had been having this problem since yesterday :( Maybe I overdid the Terminal. Even the codes that used to work doesn't work anymore. Here is what 's happening: * I wanted to remove lines containing digits so I used this... (25 Replies)
Discussion started by: Nexeu
25 Replies

10. Shell Programming and Scripting

Calculate the constant e to 14+ decimal places using integer maths.

Hi guys... I am loving this integer maths thing. 64 bit systems are certainly easier than 32 bit, but hey, I don't intend to leave out my fav' platform. Using one of the 'Brothers' methods, URL inside the code. #!/bin/sh # # #!/usr/local/bin/dash # e_constant.sh # Brother's formula . #... (2 Replies)
Discussion started by: wisecracker
2 Replies
fmlexpr(1F)							   FMLI Commands						       fmlexpr(1F)

NAME
fmlexpr - evaluate arguments as an expression SYNOPSIS
fmlexpr arguments DESCRIPTION
The fmlexpr function evaluates its arguments as an expression. After evaluation, the result is written on the standard output. Terms of the expression must be separated by blanks. Characters special to FMLI must be escaped. Note that 30 is returned to indicate a zero value, rather than the null string. Strings containing blanks or other special characters should be quoted. Integer-valued arguments may be pre- ceded by a unary minus sign. Internally, integers are treated as 32-bit, 2s complement numbers. The operators and keywords are listed below. Characters that need to be escaped are preceded by . The list is in order of increasing precedence, with equal precedence operators grouped within {} symbols. USAGE
Expressions expr | expr Returns the first expr if it is neither NULL nor 0, otherwise returns the second expr. expr & expr Returns the first expr if neither expr is NULL or 0, otherwise returns 0. expr { =, >, >=, <, <=, != } expr Returns the result of an integer comparison if both arguments are integers, otherwise returns the result of a lexical comparison. expr { +, - } expr Addition or subtraction of integer-valued arguments. expr { *, /, % } expr Multiplication, division, or remainder of the integer-valued arguments. expr : expr The matching operator : (colon) compares the first argument with the second argument which must be a regular expression. Regular expression syntax is the same as that of ed(1), except that all patterns are "anchored" (that is, begin with ^) and, therefore, ^ is not a special character, in that context. Normally, the matching operator returns the number of bytes matched (0 on failure). Alterna- tively, the (...) pattern symbols can be used to return a portion of the first argument. EXAMPLES
Example 1: Incrementing a variable Add 1 to the variable a: example% fmlexpr $a + 1 | set -l a Example 2: Setting a variable equal to a filename For $a equal to either /usr/abc/file or just file: example% fmlexpr $a : .*/(.*) | $a returns the last segment of a path name (that is, file). Watch out for / alone as an argument: fmlexpr will take it as the division opera- tor (see NOTES below). Example 3: A better representation of Example 2 example% fmlexpr //$a : .*/(.*) The addition of the // characters eliminates any ambiguity about the division operator (because it makes it impossible for the left-hand expression to be interpreted as the division operator), and simplifies the whole expression. Example 4: Counting characters in a variable Return the number of characters in $VAR: example% fmlexpr $VAR : .* EXIT STATUS
As a side effect of expression evaluation, fmlexpr returns the following exit values: 0 if the expression is neither NULL nor 0 (that is, TRUE) 1 if the expression is NULL or 0 (that is, FALSE) 2 for invalid expressions (that is, FALSE). ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Availability |SUNWcsu | +-----------------------------+-----------------------------+ SEE ALSO
ed(1), expr(1), set(1F), sh(1), attributes(5) DIAGNOSTICS
syntax error for operator/operand errors non-numeric argument if arithmetic is attempted on such a string In the case of syntax errors and non-numeric arguments, an error message will be printed at the current cursor position. Use refresh to redraw the screen. NOTES
After argument processing by FMLI, fmlexpr cannot tell the difference between an operator and an operand except by the value. If $a is an =, the command: example% fmlexpr $a = = looks like: example% fmlexpr = = = as the arguments are passed to fmlexpr (and they will all be taken as the = operator). The following works, and returns TRUE: example% fmlexpr X$a = X= SunOS 5.10 5 Jul 1990 fmlexpr(1F)
All times are GMT -4. The time now is 05:02 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy