I have a process that just finished (it was written in C) so I return a number in main to tell the status开发者_Go百科. How can I get this value from the process that just finished in the shell?
It's easy: if you are in BASH or SH:
./c_program args...
echo "The retval is $?"
Please note: the variable $?
contains the return value of the last run command.
So, you may want to store it in another variable before it changes:
myRet=$?
# do what you want with myRet
Command chaining (see orangeoctopus answer for more info)
As you may know, a command is considered success if it returns 0,
while a value different than 0 indicates fome kind of failure.
In BASH, you can chain commands by using the &&
or ||
operators:
command1 && command2
↳ In the above, command2
will execute only if command1
succedded.
command1 || command2
↳ In the above, if the first command fails, the second will execute.
Try using echo $?
directly after you run your command:
$ ./myprogram
$ echo $?
If you are trying to base a decision on the success of your command, you can use &&
:
$ ./myprogram && echo success
if you are trying to base a decision on the failure of your command, you can use ||
:
$ ./myprogram || echo failure
These two things are sometimes called "short circuiting"
solution is quite simple like: echo $?
精彩评论