Here's the code snippet from a shell script. (It's from MPFR library's configure script and it starts with #!/bin/sh. The original script is over 17000 lines long.. It's used when building gcc.)
Because I have so many questions in a short piece of code, I have embedded my questions in the code. Please can somebody explain to me why the code is like this? Also, though I have a vague idea, I would appreciate if someone could explain what this code is doing (I understand it will be difficult because it's only a part of a big script).
if { { ac_try="$ac_link"      
    # <---- question 1 : why is the first curly bracket used for if condition? (probably just for grouping and using the last return code)
    # <---- question 2 : Is this second bracket for locally used code(probably)?
case "(($ac_try" in           # <---- question 3 : what is this "((" symbol?
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5     # <---- question 4 : what is this >&5 redirection? I know >&{1,2,3} but not 5.
  (eval "$ac_link") 2>&5
    # <----- question 5 : why use sub-shell here? not to use eval result?
  ac_status=$?
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; }; then :  # <---- question 6 : is this ':'(nop) here ?
    ....
    some commands
    ....
else
    ....
    some commands
    ....
fi
 
     
     
    