シェルスクリプトのごく基本的なツッコミ
はじめに
無駄な cat, 無駄な echo を無くすことが大事です。
この記事中では、サンプルのコマンドとして mysql をつかってます。
本来、 mysql なら -e オプションで引数から文字列を入れるほうが綺麗です。
その場合は -BN してやるとバッチモードで同じ出力フォーマットになります。
今回は、「標準入出力」に対するサンプルのため、 e オプションは使用してません。
ヒアドキュメントを使ってもパイプできる
忘れがちですが、 EOT の後にもパイプもリダイレクトも繋げられます。
<<EOT mysql db_name | tail -n 1 SHOW DATABASES; EOT
無駄な echo しない
無理に一行で書こうとして
echo 'SHOW DATABASES;' | mysql
とかやるくらいなら、
mysql <<<'SHOW DATABASES;'
こっちのほうがいけてる。
先に標準入力が書きたいなら、
<<<'SHOW DATABASES;' mysql
これでも可能。
なぜだかリダイレクトは最後にしか書けないと思い込んでいる人が多い。
複数行コメント
複数行のコメントには : (null command) を使う。
:<<__EOT__
ここにコメント
__EOT__
次のような cat を見ると悲しくなります。
cat >/dev/null<<__EOT__ ここにコメント __EOT__
デバッグ
デバッグ時には -x オプションで起動すると良い。