在 Linux 中检查 c 文件输出

Posted

技术标签:

【中文标题】在 Linux 中检查 c 文件输出【英文标题】:Check a c file output in Linux 【发布时间】:2022-01-23 20:00:52 【问题描述】:

我有 2 个文件 .c,其中仅包含一个 printf("x") 我在 bash 脚本中,我想检查 printf 中的值是否适用于 project1.c =20 和 project 2 =10,然后根据值进行一些更改。 我应该如何在 if 命令中进行比较? 这是我试图做的,不确定它是否正确。

for d in $1/*/*

do
gcc project1 project1.c 
if[ ./project1 = 20 ];then
$project1 =30
else
$project1 =0
fi
gcc project2 project2.c
if[ ./project2 =10 ];then
$project2 = 70
else
$project2 = 0
fi
sum=$project1 + $project2
echo "project1 : $project1 project2: $project2 total grade: $sum" >> grades.txt

done
fi

【问题讨论】:

printf("x") 只会打印x,那怎么可能是2010 使用"$(./project1)"获取程序的输出为字符串。 你需要学习基本的shell语法。 if[ 之间需要空格。在作业中,= 周围不能有空格。不要将$ 放在要分配的变量之前。 把你的代码粘贴到shellcheck.net,它会显示所有明显的问题。 printf("x") 主要是因为.c文件中的值不同,所以你只是假设x是一个值,我想检查它是否是20。关于 shell 语法,感谢您的建议,稍后我会将它们应用到我的代码中并进行更改,如果我遇到更多困难,我希望我能指望您!谢谢! 【参考方案1】:

您对gcc 的调用是错误的。您必须指定输出文件:

gcc -o project1 project1.c

接下来,在 shell 中,变量替换是与赋值不同的过程。所以,你不能写$var=foo。正确的语法是var=foo

然后,空格是一个特殊字符(用于分隔参数)。所以var=foovar = foo 不一样。所以,正确的语法是:

project1=30

接下来,在 shell 中,模式 $(command)command 的结果替换。所以。我必须这样做:

if [ $(./project2) == 10 ]; then

最后,您可以使用$((calculus)) 进行算术运算。所以,你必须写:

sum=$(($project1 + $project2))

【讨论】:

顺便说一句,请在发布之前缩进/清理您的代码。 我是 linux 环境的新手,它与我见过的所有其他编程内容都有些不同,因此我很讨厌它:D 感谢您的提示和解决方案,我稍后会应用它们并告诉你我是否还有其他困难!

以上是关于在 Linux 中检查 c 文件输出的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令比较文件差异 diff

将 top 的结果输出到文件中

linux sort命令 实例

将 top 的结果输出到文件中

Linux命令2——b

linux常见命令