web-dev-qa-db-ja.com

シェルスクリプトからファイルを作成、書き込み、保存する

ファイルを手動で書きたくないので、シェルスクリプトを作成しました。ユーザーがキーを押すことなく、自動的にファイルを書き込んで保存する方法はありますか?

Sudo nano blah
#write stuff to file
#save file
#continue

^これは* .shファイル内にあります

または、スクリプトで単純なテキストファイルを作成する別の方法はありますか?

8
Zarkopafilis

コマンドのより複雑なシーケンスについては、catコマンドと here document の使用を検討する必要があります。基本的なフォーマットは

command > file << END_TEXT
some text here
more text here
END_TEXT

END_TEXTラベルが引用されているか引用されていないかに応じて、2つの微妙に異なる動作があります。

  1. 引用符なしラベル:内容は通常のシェル展開の後に書き込まれます

  2. 引用符付きラベル:ヒアドキュメントの内容は、通常のシェル拡張なしで文字通り処理されます

たとえば、次のスクリプトを考えます

#!/bin/bash

var1="VALUE 1"
var2="VALUE 2"

cat > file1 << EOF1
do some commands on "$var1" 
and/or "$var2"
EOF1

cat > file2 << "EOF2"
do some commands on "$var1" 
and/or "$var2"
EOF2

結果は

$ cat file1
do some commands on "VALUE 1" 
and/or "VALUE 2"

そして

$ cat file2
do some commands on "$var1" 
and/or "$var2"

スクリプトからシェルコマンドを出力する場合は、おそらく引用符で囲まれた形式が必要です。

13
steeldriver

これを行うためにエディターをいじる必要はありません。

簡単なechoコマンドでファイルに何かを追加できます。例えば

echo "Hello World" >> txt

「Hello world」をファイルtxtに追加します。ファイルが存在しない場合は作成されます。

または、ファイルが既に存在する可能性があり、上書きする場合

echo "Hello World" > txt

1行目:および

echo "I'm feeling good" >> txt
echo "how are you" >> txt 

後続の行。

最も簡単なのは、.shスクリプトに一連のエコーコマンドを含めるだけの場合です。

7
Warren Hill