bash ヒアドキュメントメモ

投稿者: | 2020年10月2日

同じ作業を何度か行わなければならない時、スクリプトを書くか、コピペで流し込むか迷うことがあります。複雑な処理ではなく、定型作業ならばメモ帳にコマンド列を列挙し、一気にコピー、そしてペーストしちゃいます。

そんな時、bashのヒアドキュメントを使うことが結構あるのでメモっときます。

基本 (ノーマル)

$ cat - << EOF
> I am a pen.
> you too?
> EOF
I am a pen.
you too?
$

EOFまでの入力された文字列を << の左側にあるコマンドへ流し込む。

ファイルに文字列を流し込む(よく使う)

$ cat - << EOF >> ./config.conf
name = pen
age = 5
EOF

$ cat ./config.conf 
name = pen
age = 5
$ 

変数もコマンド実行結果も埋め込めるから、設定ファイルをテキトーに流し込む時など。

_MYIP=$(ip addr show dev bru02|grep -w inet|awk '{print $2}')
cat - << EOF >> ./config.conf
MY_IP = ${_MYIP}
OS = $(uname)
VERSION = '$(uname -v)'
EOF

$ cat ./config.conf 
MY_IP = 10.255.253.5/30
OS = Linux
VERSION = '#1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11)'
$

べんりべんり。

ヒアドキュメントの実行結果をパイプに渡す(たまに使う)

インタラクティブなコマンドに命令を流し込んでその結果を整形する時とかー

cat - << EOS | curl -s telnet://localhost:25/ | cat -n -
HELO mail
QUIT
EOS
     1  220 xxx.example.com ESMTP Postfix (Debian/GNU)
     2  250 xxx.example.com
     3  221 2.0.0 Bye
$ 

載せるのにいい例が思い浮かばないけど。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)