Can $? return multiple values?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Can $? return multiple values?
# 1  
Old 04-29-2010
Java Can $? return multiple values?

Hi,
I have a script which does something like the below:

Code:
execute_some_script.sh $arg1 $arg2 `exec-some-cmd`
if [ $? -eq 0 ] then;
 do something
else
 do something else
fi

However, during some cases, there is an error saying:

line xxx: [: too many arguments

at the line number which has the if statement. The script which is getting called is actually an expect script. Anyway, I am really confused about how its possible for $? to return multiple values. Can someone please help? Smilie
# 2  
Old 04-29-2010
A single program can't return multiple values, and the shells I'm aware of that support multiple exit status returns(for pipe chains, etc) put it in an array elsewhere. I'm not sure what's going on here. Is this code pasted letter for letter? What shell are you using?
# 3  
Old 04-29-2010
You sure it's not in script.sh or in the `exec-some-cmd`code? Each of those may execute in a different shell process, so it's possible that they have a [ command at the same line number.

If you can, add "set -x" at the top of all shell scripts/commands that are executing; it'll allow you to see exactly what is causing the problem.

Welcome to the forum,
Alister

Last edited by alister; 04-29-2010 at 02:37 PM..
# 4  
Old 04-29-2010
Code:
if [ $? -eq 0 ] then;
 do something
else
 do something else
fi

By the way, the semicolon is in a wrong position.

Can you post the relevant sections of your script?
# 5  
Old 04-29-2010
Thanks for your comments. Smilie

The script is about 1800 lines large. It does call another script to run in the background using:

Code:
nohup setup.sh & 2> /dev/null

and then proceeds to do some work. This setup script is much smaller,though. And the line number for which the error is shown is much greater than the number of lines in setup.sh.

Here are the relevant parts of the script which actually gets the error:

Code:
        get_info.sh $ip key1 `cat /var/t` >& /dev/null
        if [ $? -ne 0 ]; then
            echo "could not connect"
        else
            echo "done"
        fi


Last edited by laloo; 04-29-2010 at 02:41 PM.. Reason: formatting
# 6  
Old 04-29-2010
Return values (like $? in shell) from child processes are 8 bit numbers. This is because
the syscall, wait(), truncates a return value from a child process to the lowest 8 bits.

The range for 8 bit numbers is 0->255 (unsigned) or -128 -> 127 (signed).

That is all there is for $? in shell. Nothing else like multiple return values.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[bash] wanted: function with a clean way for multiple return values

Hi, I have a small part of a project which is done as a bash script. bash was selected as an portability issue that works out of the box. In this script I have an exec shell-function, a wrapper around arbitrary commands. I want to have STDOUT, as an addon STDERR and the EXIT-CODE of a specified... (5 Replies)
Discussion started by: stomp
5 Replies

2. Shell Programming and Scripting

Read record from the text file contain multiple separated values & assign those values to variables

I have a file containing multiple values, some of them are pipe separated which are to be read as separate values and some of them are single value all are these need to store in variables. I need to read this file which is an input to my script Config.txt file name, first path, second... (7 Replies)
Discussion started by: ketanraut
7 Replies

3. Shell Programming and Scripting

Query the table and return values to shell script and search result values from another files.

Hi, I need a shell script, which would search the result values from another files. 1)execute " select column1 from table_name" query on the table. 2)Based on the result, need to be grep from .wft files. could please explain about this.Below is the way i am using. #!/bin/sh... (4 Replies)
Discussion started by: Rami Reddy
4 Replies

4. Shell Programming and Scripting

Returning and capturing multiple return values from a function

Hi I am pretty confused in returning and capturing multiple values i have defined a function which should return values "total, difference" i have used as #!/usr/bin/ksh calc() { total=$1+$2 echo "$total" diff=$2-$1 echo "$diff" } I have invoked this function as calc 5 8 Now i... (2 Replies)
Discussion started by: Priya Amaresh
2 Replies

5. Shell Programming and Scripting

Return multiple values using for loop in perl

I am using a for loop to copy files from say DIR1 and DIR2 to DIR3.I have to check whether files are copied from DIR1 and DIR2 and print the respective message. @path=("$DIR1","$DIR2"); foreach (@path) { $rc=system("cp $_/*xml $DIR3"); if ($rc == 0) { print "Files were copied... (1 Reply)
Discussion started by: liyakathali
1 Replies

6. Shell Programming and Scripting

Need Multiple Return Values

Hi, I need to retrun multiple values function errorFileCreation { echo "Before" return -1 "Siva"; echo "Aftyer" } echo ${?} - This can be used to getting first value. how can i get second one. Advance Thanks... Shiv (3 Replies)
Discussion started by: rsivasan
3 Replies

7. Shell Programming and Scripting

Remote ssh and return values..

hi I'm executing below 2 cmds which is working file.. ( cmd will ssh to remote host and look for pattern in remote file) ssh $USER@$HOST "grep -n \"$PATTERN\" $RDIR/$RFILE | awk -F":" '{print \$1}'|tr '\n' ':'|sed 's/:$//g'" > /tmp/_log_out VAR=`cat /tmp/_log_out` output in /tmp/_log_out... (2 Replies)
Discussion started by: id100
2 Replies

8. Shell Programming and Scripting

Help: return values from awk

Hi. I have a script like this: nawk 'BEGIN {FS=","; TOT1=0; REJ1=0;} { if($7=="TOTAL") { TOT1=TOT1 +$8} if($7=="REJS") { REJ1=REJ1 +$8} }' FILE_123.dat and... (1 Reply)
Discussion started by: mrodrig
1 Replies

9. Shell Programming and Scripting

Possible return values for $?

I think the $? returns 0 if the last issued command was successful and otherwise if not. But does anyone knows the value list that may be returned ? (or it is only zero/one ? ) Thanks in advance, Abrahao. (3 Replies)
Discussion started by: 435 Gavea
3 Replies

10. UNIX for Dummies Questions & Answers

exit/return values

Sys: HP-UX 9000 In the calling script how do I 'read' the return/exit value of a called script?:confused: THX in advance for any assistence.:) (1 Reply)
Discussion started by: vslewis
1 Replies
Login or Register to Ask a Question