if [ $? -ne 0 ] then syntax error then unexpected

Enjoy coding picture Enjoy coding · Aug 31, 2010 · Viewed 39.8k times · Source

I have been trying to execute the following UNIX shell script which is not working. I am running it by KornShell (ksh).

echo $?;
if [ $? -ne 0 ]
then
 failed $LINENO-2 $5 $6
fi
failed()
{
        echo "$0 failed at line number $1";
 echo "moving $2 to failed folder"
}

This is giving an error saying Syntax error:then unexpected.. Basically I have to check for the last executed ksh script's highest/last statement's return code and if it is not equal to zero I have to call function failed with the given parameters. I tried putting semicolon before then but that also did not work.

Can you please help?

Edit1: Based on the inputs I changed code. Still the same problem exists.

ksh ../prescript/Pre_process $1 $2 $3
rc=$?;
if [[ $rc -ne 0 ]];then
    echo "failed";
       exit 1;

Edit2: It is working for the then part by using double squared brackets. I feel I used code of bash script for ksh. I am facing problem in function call of failed. Please let me know appropriate way of function call in ksh for this example

Answer

Jon Freedman picture Jon Freedman · Aug 31, 2010

This looks like bash rather than ksh

failed() {  
  echo "$0 failed at line number $1";  
  echo "moving $2 to failed folder"  
}

if [[ $? -ne 0 ]]
then
  failed $LINENO-2 $5 $6  
fi