gpt4 book ai didi

c - 编写一个 Shell 脚本来检查一个 C 程序是否打印 Hello World

转载 作者:行者123 更新时间:2023-12-04 18:37:29 25 4
gpt4 key购买 nike

我正在尝试编写一个 Shell 脚本来编译一个 c 程序并检查它是否打印“Hello World!”到标准输出。
这就是我现在所拥有的。
diff 中的第二个参数检查是一个只有“Hello World!”的文件。在里面。

#!/bin/sh
gcc -Wall hello.c -o hello
./hello > outfile
if diff outfile check >/dev/null ; then
echo Same
else
echo Different
fi

在我尝试运行脚本后,我的 Ubuntu 一直显示此错误。
"./build.sh: 8: ./build.sh: Syntax error: "fi" unexpected (expecting "then")"

请让我知道我的代码有什么问题。

最佳答案

正如我在评论中所说,我怀疑您的脚本文件有 DOS/Windows 行结尾;见 this question .

此外,由于您正在进行的比较只是一行,因此很容易作为字符串比较进行(而不是将字符串保存到文件中,并使用像 diffcmp 这样的文件比较器):

#!/bin/sh
gcc -Wall hello.c -o hello
if [ "$(./hello)" = 'Hello World!' ]; then
echo Same
else
echo Different
fi

备注: $( )是“命令替换”;它将内容作为命令运行,捕获其输出,然后将其替换到命令行中。周围的双引号防止它被分成“单词”(即“Hello”和“World!”被视为单独的单词)以及看起来像文件名通配符的东西被扩展为匹配文件的列表。 (您几乎应该总是在命令和变量替换周围加上双引号,因为这些效果往往会导致奇怪的问题。)

关于c - 编写一个 Shell 脚本来检查一个 C 程序是否打印 Hello World,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60049472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com