Hi
I have problem with my script.
I dont now why but i don't change anything and script stop working.
this is my code:
Code:
#!/bin/sh
for i in `ps -A | grep pocron.sh | grep -v grep | awk '{print $2}'`
do
COUNT=$((COUNT+1))
done
ostatnie_wykonanie=`cat porader.log`
aktualna_data=`date +%s`
wynik=$(($aktualna_data - $ostatnie_wykonanie))
if [ $wynik -gt 63 ]
then
if [ $COUNT -z ]
then
./pocron.sh
fi
elif [ $COUNT -gt 1 ]
then
killall pocron.sh
./pocron.sh
fi
exit
when i run script error is:
[: -gt: unary operator expected
I suppose the problem comes from "$COUNT" not being initialised. If the expression driving the for-loop in the first line of your script produces no output the loops body will never be executed and this leaves COUNT uninitialised.
The error-message comes from "test" ("[" is just another name for this program) and says that "-gt" is a clause which expects two operands: one before and one behind. One of these required operands is missing.
Insert a debug line before the line
Code:
echo \"$COUNT\"
if [ $COUNT -z ]
to make sure COUNT does indeed have a value - i suppose it doesn't.
Furthermore, there are severe problems with your code:
Code:
if [ $COUNT -z ]
is a syntax error: "-z" expects an operand after, not before. It tests for a variable being uninitialised or empty and because no variable is given this is always true. Still, this is probably not what you want. (Syntactically) Correct is
Code:
if [ -z $COUNT ]
Still, using variables which are sometimes initialised, sometimes not is always a hazard. Add to this that you don't even need the for-loop for counting (use "grep -c" instead) and you shouldn't use backticks at all (really! - they are B-A-D).
Further, i suggest you reindent your code properly. The following syntax error would have stood out immediately:
Code:
if ...
....
fi
elif ....
....
fi
The "elif" should be an "if", because the first "if" is already closed by a "fi". The "elif" is not the "else"-part of the "if". As there are no other clauses you test the "elif" is superlfuous and you should simply use "else".
Write your script this way:
Code:
#! /bin/sh
typeset -i COUNT=0 # you make sure the variable is declared
COUNT=$(ps -A | grep pocron.sh | grep -vc grep)
...
if [ $COUNT -eq 0 ] ; then
....
else
.....
In all my Googling, this usually happens when someone is comparing a variable, and that variable is unset. That doesn't appear to be the case for me...
#!/bin/bash -x
while read line
do
f=$(echo $line | tr -s ' ' | cut -d' ' -f 3)
echo $f
if
then
echo "This... (2 Replies)
Hiya all,
Why do I get a :unary operator expected when I try to put a condition statement in my shell script (sh) like so and how to fix?
if ; then
echo "say hello"
else
echo "don't say hello"
fi
? It seems if the script receives an argument it works but if I don't put an... (4 Replies)
i=0
while
Shell script reports an error "unary operator expected" pointing the above line.
$i by default is 0 and holds integer value and $buf is also holding integer value.
Please can some one let me know what is missing.
Thanks. (1 Reply)
I get the following error
./get_NE05: line 42:
while
do
echo ${STRING_NAME}
J=1
if ; then
EXT=0$I
else
EXT=$I
fi
while
do
echo $I-$J
#calculating last occurrence
OCCURRENCE=`grep -io "${STRING_NAME}"... (3 Replies)
find . -name "*.*"|xargs grep WT:DBF_WL>> $F
Wfexist=`cat $F|grep $i`
echo $Wfexist
if ;
then
echo $Wfexist
echo "Workflow Exist"
else
touch $O
chmod 777 $O
echo $Wfexist
echo $WfExist >> $O
fi
I am getting the error that -ne: unary operator expected in the line with red... (2 Replies)
Hello all, :confused:
I am not getting this error.
Pls help me.
./construct_operon.sh: line 5:
#!/bin/bash
# Construct Operons using gene pairs.
rm -rf operons_result
lines=`awk 'END {print NR}' ecoli_operons`
while ;
do
head -1 ecoli_operons | awk '{print $1"\n"$2}' > pattern
... (5 Replies)
Im trying to fix my /etc/weekly that rotates various logs however it does them no matter what filesize they are and i want them to only do it if there file size exceeds 2M or something. So I'm playing with a script to get the filesize using a ls -l command which works and puts the value into a... (3 Replies)
hi
i am trying to compare a value with value 50. but i am getting
"
I am using
if
then
echo "------------"
fi
please help
thanks in advance
Satya (2 Replies)
Hi
I am doing a script like
if
then
echo "table name dosent exist"
exit
fi
the problem is if $table_name is null then i am getting the error
Please help me
Thanks in advance (2 Replies)