【发布时间】:2019-02-13 08:57:41
【问题描述】:
所以我有一个 C 程序,它接受一个命令行参数,并用它做一些事情。片刻之后,它会重新提示用户输入一些标准输入。
例如,典型用法可能如下所示:
./prac1 4
4
Enter something else: _hello_
hello
我的问题是,我如何编写一个能够重新输入更多输入(通过标准输入)的 bash 脚本,以便在程序输出后响应程序的重新提示 输入其他内容: ?
到目前为止我有这个:
cc=gcc
EXEC=prac1
SRC=prac1.c
input="4"
printValue=`./$EXEC $input`
if [ "$?" == '1' ];
then
echo "Error"
exit
fi
echo "printValue = $printValue"
上面的prac1是指以下代码:
int main(int argc, char** argv) {
char* input[70];
printf("%c\n", argv[1][0];
fflush(stdin);
printf("Enter something else: ");
fscanf(stdin, "%s", input);
printf("%s\n", input);
}
bash 脚本使用命令行参数“4”调用可执行文件prac1。当我运行此脚本时,在它使用 printValue=`./$EXEC $input` 执行后,我必须在“输入其他内容:”提示之后手动输入一些内容。这是可以预料的。
但是,我试图弄清楚如何让 bash 自动输入某些内容。我的意思是这样我就不必自己手动输入了。
非常感谢您。
【问题讨论】:
-
您当前的脚本有语法错误;将其粘贴到shellcheck.net 以进行诊断。
-
也许你想看看
expect(1) -
@BasileStarynkevitch 我并不是要听起来傲慢,但您可以在提供的代码顶部添加“include
”,它是可编译/可运行的。 -
刷新输入流是未定义的行为。如果它实际上丢弃了输入,它将破坏您的意图。当然,如果程序要求更多输入,它应该是接受它的程序 - 重新运行程序没有什么意义。最好在 bash 脚本中发出该提示。