Assigning bc output to a variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Assigning bc output to a variable
# 1  
Old 11-07-2013
Assigning bc output to a variable

I'm converting decimal to integer with bc, and I'd like to assign the integer output from bc to a variable 'val'.

E.g. In the code below: If b is 5000.000, lines 6 and 8 will output:
5000
(5000.000+0.5)/1 | bc

I'd like val to take the value 5000 though, rather than 5000.000

Does someone have any idea how to do that?
Code:
#! /bin/bash

while read b
do

    echo "($b+0.5)/1" | bc        # line 6 - works
    val= "($b+0.5)/1 | bc"        # line 7 - doesn't work
    echo $val                          # line 8

done < infile


Last edited by Franklin52; 11-07-2013 at 08:20 AM.. Reason: Please use code tags
# 2  
Old 11-07-2013
Quote:
Originally Posted by pina
I'm converting decimal to integer with bc, and I'd like to assign the integer output from bc to a variable 'val'.

E.g. In the code below: If b is 5000.000, lines 6 and 8 will output:
5000
(5000.000+0.5)/1 | bc

I'd like val to take the value 5000 though, rather than 5000.000

Does someone have any idea how to do that?


Try:
Code:
#! /bin/bash

while read b
do

    echo "($b+0.5)/1" | bc        # line 6 - works
    val=$(($b+0.5)/1 | bc)        # line 7 - should now work
    echo $val                          # line 8

done < infile

Basically $(...) invokes command substitution such that the output of command/subshell can be assigned to a variable.

Andrew
# 3  
Old 11-07-2013
Quote:
Originally Posted by apmcd47
Try:
Code:
#! /bin/bash

while read b
do

    echo "($b+0.5)/1" | bc        # line 6 - works
    val=$(($b+0.5)/1 | bc)        # line 7 - should now work
    echo $val                          # line 8

done < infile

Basically $(...) invokes command substitution such that the output of command/subshell can be assigned to a variable.

Andrew
@ apmcd47 your solution gives error

if ksh93 then this will work
Code:
val=$((b+0.5/1))

Try this for bash

Code:
$ b=5000
$ echo "($b+0.5)/1" | bc 
5000
$
$ variable=$(echo "($b+0.5)/1" | bc )
$ echo $variable
5000

if floating point is needed then try
Code:
$ var=$(echo "scale=1;$b+0.5/1" | bc) 
$ echo $var
5000.5


Last edited by Akshay Hegde; 11-07-2013 at 08:38 AM..
# 4  
Old 11-07-2013
Thanks, Akshay Hedge and Andrew!

This works nicely:
Code:
 variable=$(echo "($b+0.5)/1" | bc )

The command substitution didn't for some reason.

Last edited by pina; 11-07-2013 at 10:11 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Expect - assigning UNIX command output to a variable

Hi, I'm writing a script that connects through ssh (using "expect") and then is supposed to find whether a process on that remote machine is running or not. Here's my code (user, host and password are obviously replaced with real values in actual script): #!/usr/bin/expect set timeout 1... (3 Replies)
Discussion started by: oseri
3 Replies

2. Shell Programming and Scripting

Assigning output from awk to variable

I have a script whose contents are as below result= awk 's=100 END {print s }' echo "The result is" $result The desired output is The result is 100 My script is running without exiting and i am also not getting the desired output. Please help (5 Replies)
Discussion started by: bk_12345
5 Replies

3. Shell Programming and Scripting

Piping and assigning output to a variable in Perl

Hi All, I am trying to convert the below Csh code into Perl. But i have the following error. Can any expert help ? Error: ls: *tac: No such file or directory Csh set $ST_file = `ls -rt *$testid*st*|tail -1`; Perl my $ST_file = `ls -rt *$testid*st*|tail -1`; (10 Replies)
Discussion started by: Raynon
10 Replies

4. Shell Programming and Scripting

assigning SED output to a variable = trouble!

i'm on a Mac running BSD unix. i have a script in which i ask the user to input the name of a mounted volume. i then call SED to substitute backslashes and spaces in place of the spaces. that looks like this: echo "Enter the name of the volume" read Volume echo "You've chosen \"$Volume\""... (7 Replies)
Discussion started by: hungryd
7 Replies

5. Shell Programming and Scripting

Assigning output of a command to variable

When I run time -p <command>, it outputs: real X.XX user X.XX sys X.XXwhere X.XX is seconds. How I can take just that first number output, the seconds of real time, and assign that to a variable? (9 Replies)
Discussion started by: jeriryan87
9 Replies

6. Shell Programming and Scripting

Assigning output to a variable

I am new to unix shell scripting. I was trying to convert each lines in a file to upper case. I know how to convert the whole file. But here i have to do line by line. I am getting it in the below mentioned script #!/bin/bash #converting lower to upper in a file #tr "" "" <file1... (3 Replies)
Discussion started by: jpmena
3 Replies

7. Shell Programming and Scripting

Assigning output of command to a variable in shell

hi, I want to assign find command result into some temporary variable: jarPath= find /opt/lotus/notes/ -name $jarFile cho "the jar path $jarPath" where jarPath is temporary variable. Can anybody help on this. Thanks in advance ----Sankar (6 Replies)
Discussion started by: sankar reddy
6 Replies

8. Shell Programming and Scripting

assigning nawk output to shell variable

Hello friends, I doing the follwing script , but found problem to store it to a shell variable. #! /bin/sh for temp in `find ./dat/vector/ -name '*.file'` do echo $temp nawk -v temp=$temp 'BEGIN{ split(temp, a,"\/"); print a}' done output: ./dat/vector/drf_all_002.file... (6 Replies)
Discussion started by: user_prady
6 Replies

9. Shell Programming and Scripting

assigning command output to a shell variable

I have the sql file cde.sql with the below contents: abcdefghij abcwhendefothers sdfghj when no one else when others wwhen%others exception when others Now I want to search for the strings containing when others together and ceck whether that does not occur more than once in the... (2 Replies)
Discussion started by: kprattip
2 Replies

10. Shell Programming and Scripting

Assigning output of command to a variable

Hi, I'm trying to assign the output of a command to a variable and then concat it with another string, however, it keeps overwriting the original string instead of adding on to the end of the string. Contents of test.txt --> This is a test var1="`head -n 1 test.txt`" echo $var1 (This is a... (5 Replies)
Discussion started by: oma04
5 Replies
Login or Register to Ask a Question