【Bash】複数行内容の複数ファイルへのリダイレクト
2404 ワード
- Bash利用時に、shellscript内で内容が複数行の文字列を、複数ファイルへ書き込みたい場合がある。
- その際に、複数
echo
や複数>
で、つい逐次書いてしまい、長くなったり重複が目立つことがある。 - そのため今回は、一括で複数行内容を複数ファイルへ書き込む(リダイレクト)方法を記録する。
結果
- 以下に結果の内容を示す。
- こちらはBashのヒアドキュメントとteeコマンドを利用した方法である。
function multi(){
# ヒアドキュメントにて複数行文字列の定義
cat <<-EOF
# list data
aaa bbb ccc
ddd eee fff
ggg hhh iii
EOF
}
# teeコマンドへ渡して、書き込み(リダイレクト)対象ファイルを指定
# 非出力のため、/dev/nullへ捨てる。
multi | tee result.txt result.bak.txt > /dev/null
- 任意のshellファイルへ記述後、実行と作成確認が出来たら完了。
内容
ヒアドキュメントの活用
- 複数文字列定義の際に、ヒアドキュメントを利用する。
- その際に意識した以下の2点。
-
<<-
を指定して、インデントを可能にする。- こちらを指定して先頭のタブ文字を削除して、見栄えを整える。
-
関数の中に入れる。
- 書き込み内容は、直指定でも変数だとしても関数の中に入れて定数化しておく。
- 「書き込み内容の整理・利用の汎用性(パイプ等)」につながる。
-
teeコマンドの利用
-
入力から、出力と書き込みを同時に行う
tee
コマンドを利用する。 - そうすることにより、定義した内容をteeへ渡すことで、出力と指定ファイルへの書き込みを同時に行ってくれる。
- ※ただし出力は行わないため、
/dev/null
へ内容を渡して非出力
- ※ただし出力は行わないため、
参考
Author And Source
この問題について(【Bash】複数行内容の複数ファイルへのリダイレクト), 我々は、より多くの情報をここで見つけました https://qiita.com/t_o_d/items/c7c05cf333beeccf9abd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .