Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

ヒアストリングで出力コマンドを使わずとも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

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