2010-03-15 83 views
3

所以我有一個運行在while(true)循環中的Linux程序,它等待用戶輸入,處理它並將結果打印到標準輸出。如何將文本發送到shell腳本中的進程?

我想編寫一個shell腳本來打開這個程序,從txt文件中提供一行,每次一行,並將每行的程序輸出保存到一個文件中。

所以我想知道是否有任何命令:
- 打開一個程序
- 文本發送過程
- 從程序接收輸出

非常感謝。

回答

1

這聽起來像你想是這樣的:

cat file | while read line; do 
    answer=$(echo "$line" | prog) 
done 

這將運行的prog一個新實例的每一行。該行將是標準輸入prog,輸出將放入變量answer中供腳本進一步處理。

有人反對「cat file |」因爲這會創建一個你並不真正需要的過程。

while read line; do 
    answer=$(echo "$line" | prog) 
done < file 
+1

downvoter是否在意解釋他或她發現的錯誤? – 2010-03-15 23:16:33

1

你看着pipes and redirections:您也可以通過把它done後使用文件重定向?您可以使用管道將來自一個程序的輸入提供給另一個程序。您可以使用重定向將文件的內容發送到程序,和/或將輸出寫入文件。

1

我假設你想要一個用bash編寫的腳本。

  1. 要打開你只需要鍵入它的名稱的文件。
  2. 發送文本的程序,你要麼讓它通過|<(採取從文件輸入)
  3. 要接收輸出使用>將輸出重定向到一些文件或>>重定向很好,但結果追加而不是截斷文件

達到你在bash想要的東西,你可以寫:

#/bin/bash 

cat input_file | xargs -l1 -i{} your_program {} >> output_file 

這對於EA調用your_program ch line from input_file並附加結果到output_file