execコマンドによるリダイレクト

アプリケーション

概要

execコマンドは現在のプロセスを実行するコマンドで置き換えるコマンドだが、引数無しで使うとリダイレクトの動的変更ができる。

ちょうどmaster直プッシュの際にプロンプトで確認するようにする

#!/bin/sh
exec < /dev/tty
read ANSWER

というコードが出てきてよくわからなかったので調べてみたのがきっかけ。

使い方

#!/bin/sh
echo "Output to stdout" // 標準入力
exec > redirect.txt // ファイルディスクリプタを変更
echo "Output to file" // ファイルに出力される

master直プッシュの際にプロンプトで確認するようにするに出てきたコードは、

#!/bin/sh
exec < /dev/tty
read ANSWER

現在の端末(/dev/tty)の入力をexecコマンドの標準入力に渡している。(わかりづらい。。。)

所感

何らかの事情で標準入力をreadできないときとかに使えそう。

参考

関連書籍