シェルスクリプトでコンテンツを含むファイルを作成する


20

私はシェルスクリプトの作成に少し慣れていないので、スクリプト内に新しいファイルを作成し、コンテンツを追加してから閉じます。ユーザーからの引数を取るべきではありません。パスとコンテンツのすべてが事前定義されています。どうすればいいですか?

回答:


24

出力リダイレクトを使用します。例えば

#!/bin/bash

echo "some file content" > /path/to/outputfile

>すべて書きますstdinが提供するstdoutechoファイルにoutputfileここに。

または、teeこれにパイプを使用することもできます。例えば

echo "some file content" | tee outputfile

どの例でも既存のを上書きすることに注意してくださいoutputfile

現在存在するファイルに追加する必要がある場合>>は、>またはの代わりに使用しますtee -a

この行でユーザー入力を受け入れない場合、ユーザー入力はここでの動作を変更できません。


ファイル内に改行を入れたい人は、こちらをご覧ください:stackoverflow.com/a/9741470/10512595
BelovedFool

18

hereドキュメントを使用してスクリプトで新しいファイルを作成する方が優れていると思います。見た目がすっきりしていて、読みやすくなっていると思います。

例えば:

cat > filename <<- "EOF"
file contents
more contents
EOF

"-"中には<<-されるタブ付きインデントを可能に、任意であり剥奪ファイルが作成されたとき。引用符は、"EOF"「here doc」が置換を実行するのを防ぎます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.