きつねたぬきだし

ちょっとしたメモ代わりに。

シェルスクリプトのごく基本的なツッコミ

はじめに

無駄な 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 オプションで起動すると良い。