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できないときとかに使えそう。
関連書籍