We got a script that we need to understand, and at some point, we got this syntax:

if  [ "$PASS_CHAINE" = "TRUE" ]
then echo "Launching DEGAGEMENT" | SLog
     cd $INTERFACE_D/bin_cm/deg
     $INTERFACE_D/bin_cm/deg/lance_deg 2>&1 ; echo "{@@##}RETURN_REAL_STATUS_SCRIPT=${?}" | SLog
     if [ $EXIT_CODE -ne 0 ]
     then echo "Error in DEGAGEMENT" | SLog

I'm confused about the echo "{@@##}" part, I don't really understand it. I know the scripts tries to test the return code of the lance_deg function, but it won't work because it's gonna get the return code of the echo command.

I can remove the echo part to solve my problem, but the point is really to understand what the {@@##} part means.

  • echo "{@@##}" prints those 6 characters, there's no special meaning Sep 2, 2015 at 14:50

1 Answer 1


That part:


Just prints:


where the last x is replaces by the value of variable $?. From the bash manpage:

   ?      Expands to the exit status of the most recently executed foreground pipeline.

That means that $? contains the exit code of the previously executed command: $INTERFACE_D/bin_cm/deg/lance_deg, which can be a digit from 0; for success and 1 or geather for an error.

See this:

$ ls file
$ echo $? # 0 indicates success
$ ls file_not_exist
ls: cannot access file_not_exist: No such file or directory
$ echo $? # >0 is an error

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .