2017-10-04 50 views
0

大家,我已經創建了一個獲得兩個不同時代的時間值之間的時間差的腳本。從文件中讀取輸入和輸出保存到另一個文件中的shell腳本

目前我的腳本讀取名爲A,B兩組值,並給出不同的時間輸出,如下圖所示,

輸入:

Enter the TIME A 
12345567787 

Enter the TIME B 
12356777897 

輸出:

-00.36 hours 

如何從名爲time.txt的單個文本文件中讀取A和B值並保存ti我不同的輸出到另一個文件「timediff.txt」。

我的輸入文件「time.txt」的外觀如何。

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

什麼,我期待的輸出文件timediff.txt樣子,

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

有關shell腳本的任何教程都應該顯示如何從文件讀取數據。 – Barmar

回答

1

使用while循環使用的read內置。重定向來自輸入文件的輸入,並將輸出重定向到輸出文件。

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

這將是更清潔的,如果你的腳本是更簡潔,並採取了從爭論它的操作數,而不是從標準輸入讀取它們,但(假設你的提示要標準錯誤),你可以這樣做:

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「' –

相關問題