在 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
,那怎么可能是20
或10
?
使用"$(./project1)"
获取程序的输出为字符串。
你需要学习基本的shell语法。 if
和 [
之间需要空格。在作业中,=
周围不能有空格。不要将$
放在要分配的变量之前。
把你的代码粘贴到shellcheck.net,它会显示所有明显的问题。
printf("x") 主要是因为.c文件中的值不同,所以你只是假设x是一个值,我想检查它是否是20。关于 shell 语法,感谢您的建议,稍后我会将它们应用到我的代码中并进行更改,如果我遇到更多困难,我希望我能指望您!谢谢!
【参考方案1】:
您对gcc
的调用是错误的。您必须指定输出文件:
gcc -o project1 project1.c
接下来,在 shell 中,变量替换是与赋值不同的过程。所以,你不能写$var=foo
。正确的语法是var=foo
。
然后,空格是一个特殊字符(用于分隔参数)。所以var=foo
与var = foo
不一样。所以,正确的语法是:
project1=30
接下来,在 shell 中,模式 $(command)
被 command
的结果替换。所以。我必须这样做:
if [ $(./project2) == 10 ]; then
最后,您可以使用$((calculus))
进行算术运算。所以,你必须写:
sum=$(($project1 + $project2))
【讨论】:
顺便说一句,请在发布之前缩进/清理您的代码。 我是 linux 环境的新手,它与我见过的所有其他编程内容都有些不同,因此我很讨厌它:D 感谢您的提示和解决方案,我稍后会应用它们并告诉你我是否还有其他困难!以上是关于在 Linux 中检查 c 文件输出的主要内容,如果未能解决你的问题,请参考以下文章