2013-03-19 44 views
1

我想在輸出文件中捕獲以下./symmir可執行文件的輸出。在KornShell腳本中編寫對輸出文件的命令響應

如果我想繼續,可執行文件首先會詢問一個問題。正如你在下面的KornShell(ksh)腳本中看到的那樣,我回答「是」這個問題。我想在回答問題後專門捕捉迴應。

#!/bin/ksh 
./symmir <<EOF 
Y 
EOF 

以下將無法正常工作,因爲它只會將問題重定向到file1,而不是我回答問題後的迴應。

#!/bin/ksh 
./symmir >> file1 <<EOF 
Y 
EOF 

謝謝你的幫助。

+0

我懷疑'symmir'是供應商提供的命令,並且可以選擇禁止確認提示。最好使用這種機制。 – 2013-03-19 22:04:05

回答

0

如果知道答案的行數,你可以這樣做:

# assumed 1 line in the answer 
./symmir <<EOF |tail -n 1 >>file1 
Y 
EOF 

或者,如果您可以讓symmir輸出問題和對不同流的答案 - 一個標準輸出和一個標準錯誤,您可以只重定向其中一個:

# assumed symmir writes answer to stderr: echo $answer 1>&2 
./symmir <<EOF 2>>file1 
Y 
EOF 
+0

這工作。非常感謝您的及時回覆。 – user1549994 2013-03-19 19:39:59

0

#!/bin/ksh 
./ask_me <<EOF >> file1 
Y 
EOF 

工作?

然而,你的代碼

#!/bin/ksh 
./ask_me >> file1 <<EOF 
Y 
EOF 

作品只是在我的測試中細爲好。

代碼即可獲得/打印字符串(ask_me.c):

#include <stdio.h> 

int main() 
{ 
    char input[256]; 
    gets(input); /* Unsafe */ 

    printf("You have entered '%s'\n", input); 

    return 0; 
} 
+0

./ask_me <> file1也不./ask_me >> file1 << EOF適合我。兩者都將問題重定向到file1。儘管謝謝你的幫助。 – user1549994 2013-03-19 19:42:00

0

這可能是EMC symcli symmir命令嗎?

如果是這種情況,請使用-noprompt選項,該選項可防止命令請求確認。