Getting unknown operator error while using a function


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Getting unknown operator error while using a function
# 1  
Old 04-12-2017
Getting unknown operator error while using a function

Hi,

I wrote a function for the first time and not able to get the desired result.

I have requirement to execute 10 queries. For this i wrote a function like below.
Code:
function Command {
  typeset var SOL;
  if [ ${1:-0} -ne 0 ]; then CONNECTION="${CONNECTION} -e -time";
  else SOL="`nzsql ${CONNECTION} -c "${1}"`";
  fi;
  echo "${SOL}";
}

CHECK1="$(Command "SELECT COUNT(*) FROM ${DATABASE}..EMPLOYEE WHERE NVL(EMPLOYEE_ID, 0) <= 0;")"
if [ ${?} -ne 0 ] ; then
echo "CHECK1 : ${CHECK1}";
fi;

Above code is throwing an error.
Code:
.[16]: Command[10]: [: COUNT(*): unknown operator

I need to put the check 1 result in a file and need to attach the file to email and send once all the 10 checks performed.

Could any one please tell me what went wrong in this function!?
# 2  
Old 04-12-2017
Quote:
CHECK1="$(Command "SELECT COUNT(*) FROM ${DATABASE}..EMPLOYEE WHERE NVL(EMPLOYEE_ID, 0) <= 0;")"
Your double quotes are not doing what's intended.
# 3  
Old 04-13-2017
Thanks for the response Aia.

You mean to say, there is no problem with defined function and only the double quotes are causing issue?

Even i tried without quotes, it is not working.
# 4  
Old 04-13-2017
The $() allows quite normal shell code.

But this one is problematic:
Code:
if [ ${1:-0} -ne 0 ]

$1 must be in quotes, and comparing it with a number looks odd.
This one looks more appropriate:
Code:
if [ -z "$1" ]

# 5  
Old 04-13-2017
Quote:
Originally Posted by Aia
Quote:
CHECK1="$(Command "SELECT COUNT(*) FROM ${DATABASE}..EMPLOYEE WHERE NVL(EMPLOYEE_ID, 0) <= 0;")"
Your double quotes are not doing what's intended.
This is not correct, they are in fact doing what is intended.

Quote:
The input characters within the quoted string that are also enclosed between "$(" and the matching ')' shall not be affected by the double-quotes, but rather shall define that command whose output replaces the "$(...)" when the word is expanded. The tokenizing rules in Token Recognition , not including the alias substitutions in Alias Substitution , shall be applied recursively to find the matching ')'.
Shell Command Language: Double-Quotes

In fact, the command is equivalent to:
Code:
CHECK1=$(Command "SELECT COUNT(*) FROM ${DATABASE}..EMPLOYEE WHERE NVL(EMPLOYEE_ID, 0) <= 0;")

# 6  
Old 04-14-2017
Many Thanks MadeInGermany,
Code:
if [ -z "$1" ]

Above one is working.

Thanks Scrutinizer, for a detailed Double- Quotes explanation.

Smilie Thanks again both of you!
# 7  
Old 04-18-2017
Dear Samah,

You are trying to program with many levels of language at a time.

I suggest:

A) use set -x to debug

B) Try one level at a time

C) Try this command line:

Code:
eval $(Command "SELECT SYSDATE FROM DUAL")

D) If it works, try:


Code:
CHECK1=$(eval $(Command "SELECT SYSDATE FROM DUAL") )

E) The error parameter is $?, or ${?}; $(?) does not work.

Regards.

Last edited by AbelLuis; 04-18-2017 at 08:58 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Unknown test operator

O/S solaris 9 shell ksh if then chk_op="WARNING...reboot within the last 24hrs, restarted at `who -r | awk '{print $4$5"@"$6}'`" ; else if ; then last_reboot1=`who -b | awk '{print $4" "$5" "$6}'` last_reboot2='..OK..'`uptime | awk '{print$3" "$4}'` ... (4 Replies)
Discussion started by: squrcles
4 Replies

2. Shell Programming and Scripting

Unknown test operator

Hi , Os - Solaris Shell - Ksh I am getting below error in if condition + id + ./om_wf_complete.sh: gid=4081(Infadmn): unknown test operator + exit 1 if ; then touch /home/odwt/1.0.0/out/oworkflow.dat chmod 777 /home/odwt/1.0.0/out/oworkflow.dat elif ; then touch... (8 Replies)
Discussion started by: nag_sathi
8 Replies

3. Programming

Help Unknown Syntax Error

Please excuse me if this is an easy fix, for I am new to Unix and C '/problem1.c: line2: syntax error near unexpected token ` '/problem1.c: line2: `main() and for one program it has : command not found2: (above the syntax error) As mentioned this is in C not C++, I have complied all... (3 Replies)
Discussion started by: apolo93
3 Replies

4. Shell Programming and Scripting

Unknown error - ``' unmatched

Hi Guys, I get the error while running below commands. Earlier the command used to execute, but after enclosing them in a function, the error is occuring backupPath=`echo $folderName | sed -e 's,/vobs/dte/itgClient/client/RegressionTestLibPostOHS/,,'` check_event=`cat... (7 Replies)
Discussion started by: ajincoep
7 Replies

5. Shell Programming and Scripting

unknown test operator

hi all, i am using the below command in my script if ; then This statement is causing the problme "ScriptName.ksh: XXX-XXX: unknown test operator" could you please suggest me , how can i avoid these messages. Singhal (7 Replies)
Discussion started by: singhald
7 Replies

6. Shell Programming and Scripting

if returns "unknown test operator"

Greetings, using ksh on Solaris, I am trying to identify the current version of a package installed on multiple servers using if statement in a precursor to upgrading. I have searched the forums and have found many hits, reviewed 3 pages and have tried the different variations noted there. Also... (3 Replies)
Discussion started by: 22blaze
3 Replies

7. Shell Programming and Scripting

syntax error in shell test: unknown operator

Hi All, can some one figure out the syntax issue here. How to overcome this? #!/bin/sh $ HFR_MAIL=NO $ PRP_MAIL=NO $ MC_MAIL=NO $ if && && ]; then > echo "NO " > else > echo "YES" > fi test: unknown operator NO $ if && && ]; then > echo "NO" > else > echo "YES" >... (4 Replies)
Discussion started by: shellscripter
4 Replies

8. Shell Programming and Scripting

test: unknown operator status

hi I get test: unknown operator status if then echo "OK." return 0 else echo "not ok" 2>&1 exit -1 fi I tried to change "A" with 'A' --> same error I tried to change if , I am getting: (3 Replies)
Discussion started by: melanie_pfefer
3 Replies

9. UNIX for Advanced & Expert Users

unknown test operator

Hi, I have the following shell script : Nbr_BD_Link=0 Nbr_BD_Link=` sqlplus sysadm/${PSWD}@${DB_Name} << EOF | tail -4 | head -1 2>/dev/null set head off feedback off ; select count(*) from dba_db_links ; exit ; EOF ` echo ${Nbr_BD_Link} if ; then ... (4 Replies)
Discussion started by: big123456
4 Replies

10. Shell Programming and Scripting

:0: unknown test operator

I have gotten the script up to this point and it works fine a system but when i copy it to another unix server running solaris 9 as the original one , its gives an error './mon_fs.sh: 0: unknown test operator' . (see script bellow) can the Gurus see to this as i am just a beginner with... (2 Replies)
Discussion started by: ibroxy
2 Replies
Login or Register to Ask a Question