Bash: Difference between revisions

No edit summary
adds 'if' examples
Line 14: Line 14:
<source lang="bash">
<source lang="bash">
for i in `seq 1 10`; do echo "$i, "; done
for i in `seq 1 10`; do echo "$i, "; done
</source>
== If construct ==
The <code>then</code> can go on the same line as the <code>if</code> as long as you use a semi-colon to terminate the if clause.  Alternately, you can put the <code>then</code> on it's own line
<source lang="bash">
if EXPR; then
  # do stuff
fi
</source>
is equivalent to
<source lang="bash">
if EXPR
then
  # do stuff
fi
</source>
Adding an <code>else</code> clause
<source lang="bash">
if EXPR; then
  # do stuff
else
  # do other stuff
fi
</source>
Adding multiple <code>else</code> clauses with <code>elif; then</code>
<source lang="bash">
if EXPR; then
  # do stuff
elif EXPR; then
  # do other stuff
else
  # final else
fi
</source>
Note: sometimes you want to comment out a section of an if/else block, or maybe it does nothing at all.  In this case, you'll get an error.  To avoid the error, you can use the bash built-in <code>:</code> (colon command)
<pre>
: [arguments]
</pre>
Do nothing beyond expanding arguments and performing redirections. The return status is zero.
<source lang="bash">
if [ -f "/tmp/Non-existing-file.txt" ] ; then
  echo "I found the non-existing file"
else
  : # the colon command prevents an error if there are no other statements in this block
fi
</source>
</source>