[Linux]bashスクリプトで、複数行ファイルを非対話で作成する簡単な方法

カテゴリ: Linux | タグ: , , ,

Linuxでbashスクリプトを作っていると、非対話でファイルに内容を追記したい場合があります。

echoコマンドと">>"リダイレクトを使うことで、ファイルの末尾に1行内容を追記できるのですが、複数行追記したい場合はechoコマンドが連続し読みづらくなります。

このような場合は、bashのヒアドキュメント機能とcatコマンドを組み合わせて使うことで、echoコマンドを重ねなくても複数行のファイルを作成することができます。

作成方法

下記のように記述することで/path/to/file.txtに3行追記させることができます。

cat <<EOL >> /path/to/file.txt
line 1
line 2
line 3
EOL

ここで、1行目の<<EOLと最後の'EOL'がbashのヒアドキュメント機能です。EOLの部分は、最初と最後がペアにさえなっていれば好きな文字列に変更可能です。(ですが、EOFや、EOT、ENDを指定することが多いです。)

cat <<SETTING >> /path/to/file.txt
line 1
line 2
line 3
SETTING

ヒアドキュメントでは、bash変数も展開させることが可能です。

cat <<EOL >> setting.conf
user=${USERNAME}
pass=${PASSWORD}
EOL

逆に、あえてbash変数を展開させて宅ない場合は、最初の<<EOLの識別子をシングルクォートで区切ればよいです。

cat <<'EOL' >> setting.conf
user=${USERNAME}
pass=${PASSWORD}
EOL

ヒアドキュメントを使わない方法

ヒアドキュメントを使いたくない場合は、以下のように全体をクォートする方法もあります。

cat 'line 1
line 2
line 3' >> /path/to/file.txt

こちらだと、ヒアドキュメントに関する知識が無くても処理内容を理解できますが、1行目テキストのカラム位置がずれるので後で見たときに勘違いしてしまうリスクがあります。

こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。