${3+"$3"}<<, >>

>Q:  How is ${3+"$3"} different than just writting $3 ?

If $3 in undefined, you get the same result. If $3 is defined, then the ${3+"$3"} version does not do word splitting or filename expansion on the contents of $3 --- so if $3 contains spaces or shell glob characters like * you will not be surprised. It is different from "$3" in that you do not wind up passing an empty string down to the command in the case that $3 is undefined.

documented on: 1999.09.13 Mon 14:07:39