在KornShell脚本中将命令响应写入输出文件

时间:2013-03-19 17:39:43

标签: shell unix scripting ksh

我想在输出文件中捕获以下./symmir可执行文件的输出。

可执行文件首先询问是否要继续。正如您在以下KornShell(ksh)脚本中看到的那样,我回答" Y"问题。我想在回答问题后专门捕获回复。

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

以下内容无法正常工作,因为它只会将问题重定向到file1,而不是我回答问题后的响应。

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

感谢您的帮助。

3 个答案:

答案 0 :(得分: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;
 }

答案 1 :(得分:0)

如果知道答案中的行数,你可以这样做:

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

或者,如果您可以让symmir输出问题并将答案输出到不同的流 - 一个输出到stdout,一个输出到stderr,您只能重定向其中一个:

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

答案 2 :(得分:0)

这可能是EMC symcli symmir命令吗?

如果是这种情况,请使用-noprompt选项,以防止命令要求确认。