2013-02-24 105 views
0

我想將表達式('if'語句)的輸出重定向到文件中。例如。我想「./primitives'的輸出重定向到一個文件中,其中表達的‘如果’語句是」 ./primitive」,是這樣的:BASH評估輸出重定向

if ./primitives 1>> output.txt ; then 
    echo "primitives OK. " | tee -a output.txt 
fi 

以上將無法工作,所以從開始:

if ./primitives ; then 
    echo "primitives OK. " 
fi 

我怎麼「./primitives'的輸出到一個文件,然後只能隨聲附和字符串‘原始人確定’。如果」 ./primitives'正確執行?

對於加分,我怎麼會重定向的唯一標準輸出」 ./primitives'附加到文件‘output.txt的’如果執行正確,然後打印‘元確定。’到控制檯和附加到兩個文件?但是,如果'./primitives'沒有正確執行,請不要將任何內容打印到'output.txt'並只將STDERR打印到控制檯?

或者我看着這個問題的方式是錯誤的?

感謝

編輯:

當前的腳本和輸出是:

腳本:

#!/bin/bash 

if ./compile.sh; then 
    echo "Compile OK. " | tee output.txt 

    if ./primitives 1>> output.txt ; then 
    echo "primitives OK. " | tee -a output.txt 
    fi 

    if ./composites 1>> output.txt ; then 
    echo "composites OK. " | tee -a output.txt 
    fi 

fi 

當前控制檯輸出:

Compile OK. 

期望控制檯輸出:

Compile OK. 
primitives OK. 
composites OK. 

回答

0

你的第一個例子是罰款;你只需要確保首先存在output.txt。你有兩種選擇:使用>代替>>(1是不必要的,因爲標準輸出是默認重定向,如果你不給一個文件描述符),或者您if語句之前執行touch output.txt創建的文件,如果它不已經存在。

+0

不是,請參閱上面的編輯爲什麼不是 – dje1990 2013-02-24 20:33:52

+0

是否將'primitives'的輸出附加到'output.txt'?如果是這樣的話,看起來'primitives'正在退出時帶有一個非零的退出代碼,從而阻止執行'if'語句的主體。 – chepner 2013-02-24 20:40:19

+0

'primitives'正在執行零代碼正確退出,但是echo不會在output.txt或控制檯輸出,所以也許我使用了'tee'錯誤?任何想法?我會有一個谷歌。由於 – dje1990 2013-02-24 20:43:31