2017-05-17 6 views
0

viエディタを開いてEsc + iを押してから、それにエントリの列を貼り付けてEsc:wq!と入力して手動で作成するファイルを作成しようとしています。ユーザーがviエディタを開くことを望まない場合、スクリプトはデータのリストを入力する必要があり、ファイルを作成してエントリを追加する必要があります。ファイルから複数のエントリを読み取ってファイルを作成する

count=1 
read total 
while [ "$count" -le "$total" ]; do read -p Name ; echo $Name > /tmp/cl; count=$(($count + 1)); done 

しかし、それはまた、私も総なしを入力したくない、私は最初の「名前」プロンプトで、出力を貼り付けるときがない、各入力後に入力してください期待して、それは動作しません。名前の

答えて

0

まあ代わりにスクリプトを書いて、あなたは直接下記使用してファイルに出力を貼り付けることができます。

​​3210
+0

これはI cat> filenameの場合と同じように動作しません。貼り付けコマンドを入力して右クリックすると、プッシュされたコピーデータを貼り付け、テキストとして貼り付けますファイルに移動します。 – Sid

+0

答えを更新しました...前の答えはそれほど明確ではありませんでした。 –

0

あなたがそれを必要としないことがあり、実行する前にファイルの内容をパージするRMラインを作成します。 あなたがシェルの変種について言及していないので、私はこの場合shを使うことを好む。

スクリプトの問題は、> operator insted of >>を使用している可能性があります。 >ファイルをパージし、その中にテキストを入れます。次のループでそれは再びパージされ、可変内容を再び入れる。

私は速くてコードが小さいので、whileの代わりに使用しました。

#!/bin/sh 

read -p "Total: " total # Input for loop cycle count 
rm ./temp.txt    # delete old file before run 
for ((i=1 ; i <= $total ; i++)) 
do 
    read -p "Name: " Name  # get name 
     echo $Name >> ./temp.txt # put it into file named temp.txt 
done 

次にこれは、あなたが探しているものですファイルの最後に空の行を追加することなく、ときに入力、空行を終了します。ペーストをコピーして、入力を1回か2回入力するのは入力に依存します。残念ながら、空の行で区切られた2つのセクションがそこでも終了するペーストコンテンツをコピーすると、残念です。

+0

これはうまくいきませんでした。なぜなら、Unixマシンでは、画面上にコピーされたすべてのデータを右クリックしてダンプすれば、この機能を使ってファイルを作成しようとしています。 – Sid

+0

申し訳ありませんが、私はあなたの質問を逃した。私の更新を確認してください。 – Edvin

関連する問題