C 将input.data传递给shell脚本并与OSX中正确的_output.data进行比较

C 将input.data传递给shell脚本并与OSX中正确的_output.data进行比较,c,macos,shell,terminal,C,Macos,Shell,Terminal,这有三个部分。目标是将输入文件传递给C程序,使其在输入中运行,创建输出并将其与正确的_output.data进行比较 这是给我的贝壳: #!/bin/sh input_file="input.data" output_file="output.data" correct_output_file="output_correct.data" while read line do echo $line | ./Prak1A3 done < $input_file > output.tmp

这有三个部分。目标是将输入文件传递给C程序,使其在输入中运行,创建输出并将其与正确的_output.data进行比较

这是给我的贝壳:

#!/bin/sh
input_file="input.data"
output_file="output.data"
correct_output_file="output_correct.data"
while read line do  echo $line | ./Prak1A3 done < $input_file > output.tmp
sed -i 's/Geben Sie einen Satz ein: Eingegeben: //g' output.tmp cat     output.tmp > $output_file
rm output.tmp
diff -u -s $output_file $correct_output_file
正确的输出文件

3 Wörter, 16 Zeichen 
5 Wörter, 28 Zeichen 
4 Wörter, 29 Zeichen 
5 Wörter, 18 Zeichen
0 Wörter, 0 Zeichen 
2 Wörter, 12 Zeichen 
4 Wörter, 19 Zeichen

现在,我正在使用
gcc-o prak Prak1A3.c
在终端中创建一个可执行文件,但是,我没有看到shell脚本的任何用途,如果我运行可执行文件,它将启动另一个终端窗口并等待键盘的输入。任何帮助或指示都将不胜感激。

Loosk,就像您应该运行运行程序的shell脚本一样。脚本希望您的程序二进制文件是
Prak1A3
,因此您需要使用
gcc-o Prak1A3 Prak1A3.c
编译它,谢谢。我刚照你的建议做了。shell运行并且大部分工作正常,但我在第21行确实遇到了一个错误。我使用gcc-o计数器Prak1A3.c编译,并在shell文件中使用了两种工具。[第21行:echo$Line |/counter]。这使得终端处于一个无止境的输入循环中。如果[Line 21:echo$Line | counter]返回[test.sh:Line 21:counter:command not found]的7次迭代。非常感谢您最后的帮助。我建议您暂时忘记脚本和输出文件。只需直接在命令行上运行程序并调试它,直到它产生正确的输出。像这样运行:
/counter
。啊,是的。好多了:)它现在似乎起作用了。最初printf在while循环中,但是我把它移到了外部,但是文件仍然不匹配。目前,每一条线都是“-5沃特,21泽琴”。此外,您使用哪些标记在注释中以灰色显示代码?我在帮助文件中找不到。你还没有告诉我们这个程序应该做什么。您所说的只是它需要“运行输入”。但是您还没有说明它要做什么处理。
Ein normaler Satz. 
Ein Satz mit    vielen  Leerzeichen. 
Tabs    und   
Leerzeichen kombiniert. Ein Tab      nach dem Satz.     
      Leerer  Start.    Tabs vorne und hinten.
3 Wörter, 16 Zeichen 
5 Wörter, 28 Zeichen 
4 Wörter, 29 Zeichen 
5 Wörter, 18 Zeichen
0 Wörter, 0 Zeichen 
2 Wörter, 12 Zeichen 
4 Wörter, 19 Zeichen