exec でリダイレクト先を指定する
ファイルを分ける
exec 2>> stderr.log 1>> stdout.logファイルを一緒にする
exec >> stdouterr.log 2>&1リダイレクト 入力と出力 - UNIX & Linux コマンド・シェルスクリプト リファレンス
”{}” のグループをリダイレクト
{
echo "1. hogehoge"
echo "2. fugafuga"
echo "3. foofoo"
echo "4. barbar"
} >>fileヒアドキュメントをリダイレクト
cat <<__END_OF_MESSAGE__ >>file
1. hogehoge
2. fugafuga
3. foofoo
4. barbar
__END_OF_MESSAGE__for 文のブロックをリダイレクト
for i in `seq 1 10`; do
echo "number $i"
done >>file
if [ -f "$str" ]; then
ls "fugafuga"
else
echo "FUGAFUGA"
fi >>file
case "$str" in
"hoge" ) ls "hogehoge" ;;
"fuga" ) cat "fugafuga" ;;
* ) echo "NG..." ;;
esac >>file関数全体をリダイレクト
func()
{
[ $#- ne 3 ] && return 1
echo "NO MESSAGE..."
echo "NO ERROR MESSAGE..." 1>&2
grep -v "$1" $2 >$3
} >/dev/null 2>&1複数コマンドの出力をまとめてパイプに流す
複数コマンドの出力をまとめてパイプに流し込みたいときは、 ”{}” によるコマンドのグルーピング機能を利用する。
{ echo "hogehoge"; echo "fugafuga"; } | wc -l→ ”{}” で複数コマンドをグループ化することにより出力を一つにまとめる。
コマンドの数が多い場合は、次のように記述すると可読性が高くなる。
{
date
echo "hoge"
echo "HOGE"
echo "fuga"
echo "FUGA"
} | tee -a file