<p>I've noticed that sometimes wrapper scripts will use <code>${1:+"$@"}</code> for the parameters rather than just <code>"$@"</code>.</p>

<p>For example, <a href="http://svn.macosforge.org/repository/macports/trunk/dports/editors/vim-app/files/gvim.sh" rel="noreferrer">http://svn.macosforge.org/repository/macports/trunk/dports/editors/vim-app/files/gvim.sh</a> uses</p>

<pre><code>exec "$binary" $opts ${1:+"$@"}
</code></pre>

<p>Can anyone break <code>${1:+"$@"}</code> down into English and explain why it would be an advantage over plain <code>"$@"</code>?</p>

From the bash man page:
```
```
${parameter:+word}
          Use Alternate Value.  If parameter is null or unset, nothing  is
          substituted, otherwise the expansion of word is substituted.
```
```
So,
```
"$@"
```
is substituted unless
```
$1
```
is unset. I can't see why they couldn't have just used
```
"$@"
```
.