Problem assigning cmd output to variable then using in IF statement
Hi,
I'm using the bourn shell on a Sun Solaris Unix system. I am relatively new to UNIX scripting so please bear with me...
I'm having a couple issues:
1) I need to have a variable $FSIZE set with the output of a command each time the script runs. (the command looks for a file and gets its fize size in bytes).
2) I need to have the appended output text from du -b stripped off before assigning the file size to the $FSIZE variable in order to for #3 to work.
3) Then I need to use the $FSIZE in my first IF clause's expression to be part of the evaluation. If the file size is > 220 bytes then send an email and stop execution of the script at that point.
I am wrapping my code with the code tags so I hope it worked...If I was unclear about anything, please let me know. Thank you for the help.
Here is my code:
I will post a reply with the results I am getting trying to run this script shortly after this one.
Thanks,
D
---------- Post updated at 11:01 AM ---------- Previous update was at 10:58 AM ----------
As mentioned, here is the results I get attempting to run the script:
Please note that if my script did not have the following code in it, it executes successfully. So I am obviously not incorporating the "fize size" piece of the code in correctly...
In any shell but a very modern ksh, 'read VAR' will run in a separate subshell because of the pipe: A new, independent shell which runs 'read VAR' in itself and not the parent program.
Thanks! That got the variable to take. I think that takes care of #1.
Can you help shed light on #2 and #3? I'm going to see what I can try (again) to make it work...
This is the error I received while trying to run the updated code. I know it has to do with the value in the $FSIZE because du -b outputs the file bytes and the (path)/name of the file.
---------- Post updated at 11:56 AM ---------- Previous update was at 11:46 AM ----------
I guess my challenge with #2 is that I want to always extract only the bytes info (numbers) from the du -b [file] output, but that value can vary in length. Substringing only the byte data is important since I'll be using $FSIZE in the first IF clause...
So, I tried to incorporate your set-- suggestion. I obviously couldn't do it correctly after several attempts. If you wouldn't mind, please explain to me using my code how I should have added it?
So, this was my alternative and it seems to work:
I'm seeing the light at the end of the tunnel now . But, the issue now is this error I'm getting executing the script (the file size = 0 bytes in this test):
The line 14: error is referring to this section of my code below, specifically where the IF expression is being evaluated.
Does it not like the && $FSIZE != 0?
Thanks for all your help so far!
D
Last edited by dqrgk0; 09-14-2011 at 04:38 PM..
Reason: masked work related info
So, I tried to incorporate your set-- suggestion. I obviously couldn't do it correctly after several attempts.
The way I posted worked. I can't see your computer from here, how about you tell me what you tried?
Your awk script doesn't work quite right because your awk is printing three fields when you only wanted one, which really defeats the point. Using awk to operate on a single line instead of using a shell builtin is literally hundreds of times slower, too.
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... (3 Replies)
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)
Hi,
The following command runs on in the Korn shell prompt. however i want to output the value of this to a variable. Can anyone provide a solution?
echo 'ABC,DEF,"G,HI,J",KLM,"MNi,O"'| awk -F "\"" '{for(i=1;i<=NF;i++){if(i%2)gsub("\,","~^~",$i)}}1' (2 Replies)
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)
Hi All,
I am getting the output for the following command when i run it on the unix console.
---------------------------
grep `whoami` /etc/passwd | awk '{print ($1);}' | cut -d ":" -f3
----------------------------
But i made it into a script and tried to print the variable, its... (5 Replies)
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)
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)
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)
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)
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)