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

複数行で使えたりします。

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

YES
WE
CAN

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

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

ONE TWO THREE

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

参考もと