2017-10-04 19 views
0

誰もが、私は2つの異なるエポック時間値の時間差を取得するためのスクリプトを作成しました。ファイルから入力を読み込み、シェルスクリプト内の別のファイルに出力を保存します。

現在、私のスクリプトは、AとBという2つの値を読み込み、以下に示すように異なる時間の出力を与え、

入力:

Enter the TIME A 
12345567787 

Enter the TIME B 
12356777897 

出力:

-00.36 hours 

私はtime.txtという名前の単一のテキストファイルからAとBの値を読み取ってtiを保存する方法私は別のファイル "timediff.txt"に出力します。

私の入力ファイル "time.txt"の様子。どのようなものか、私は、出力ファイルtimediff.txtに期待してい

A    B 
123456789  123456755 
123445567  123434657 
128765809  141536478 
127576589  163636376 
125364758  132653758 
.    . 
.    . 
.    . 
n    n 

A    B     output 
123456789 123456755 03.00 
123445567 123434657 09.00 
128765809 141536478 04:44 
127576589 163636376 08:22 
125364758 132653758 05:13 
.   .   . 
.   .   . 
.   .   . 
n   n   n 
+0

シェルスクリプトに関するチュートリアルでは、ファイルからの読み込み方法を示します。 – Barmar

答えて

1

readビルトインを使用していますwhileループを使用してください。入力ファイルから入力をリダイレクトし、出力ファイルから出力ファイルにリダイレクトします。

while read a b 
do 
    # your code here 
done <time.txt> timediff.txt 
0

スクリプトはそれほど冗長であり、標準入力からそれらを読み込むのではなく、引数からそのオペランドを取った場合、それは非常にきれいになるが、(自分のプロンプトを想定したがstderrに行くされている)あなたが行うことができます。

while read a b; do 
    printf "$a\t$b\t%s\n" "$(printf "$a\n$b\n" | myscript)" 
done <time.txt> timediff.txt 

プロンプトがあなたのouptutと混ざり合っている場合は、より適切な使い方をするためにあなたのスクリプト(便宜上、myscriptと呼ぶ)を変更することを強くお勧めします。

+0

printfの最初の引数は書式文字列なので、 '%'文字を含む変数の影響を受けます。より安全なものは 'printf"%s \ n%s \ n "" $ a "" $ b "' –

関連する問題