Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

ヒアストリングで出力コマンドを使わずともstdinに文字列を渡す事ができる

単にコマンドへ文字列を渡したいだけのケースって結構多いですよね。
bash系では、そういった要望にお答えする手法「ヒアストリング」が用意されています。
これを使えば毎回毎回echoやprintfをつかって文字列を生成する必要がなくなるわけです。

$ tr a-z A-Z <<< 'yes we can'
YES WE CAN
$ sed -e "s/[[:alnum:]]\{4\}$/HOGE/" <<< '123456789abcdef'
123456789abHOGE

bashで計算結果を16進数や2進数にしたい場合、bcコマンド - Bye Bye Mooreのように計算もます

$ bc <<< "obase=2;20"
10100

更に複数行の文字列も使えたりします。

$ tr a-z A-Z <<< 'yes 
we 
can'

YES
WE
CAN

通常の文字列以外にも、変数を指定することも。

$ FOO='one two three'
$ tr a-z A-Z <<< $FOO

ONE TWO THREE

ちょっと挙動を調べたい時は便利ですね。

参考もと