是否可以让Bash检测C中的编译误差



我有一个棘手的要求:

我需要使用bash来编译100个程序,例如1.c2.c3.c ... 100.c,我想保留成功编译的C程序,并>删除complion comploration complation cropical

到目前为止,我只能实现编译这100个程序的目标>

只需检查返回代码是否为非零,然后删除文件,如果该文件为非零。运行编译器后,返回代码存储在Shell变量$?中。

这是这样的脚本的长形式。

for i in {1..99}; 
do
    gcc ${i}.c 2> /dev/null > /dev/null
    if [[ $? -ne 0 ]]; then
        rm ${i}.c
    fi
done

作为用户268396,中间部分可以缩短为以下。

gcc ${i}.c || rm ${i}.c

使用短路运算符||的使用将确保仅在以前的语句失败时运行后一个语句(即,使用非零返回代码退出)。

您可以检查编译器返回的错误代码,并将其存储在$?

for f in *.c; do
    t=${f%.c}      # Strip the .c from the source file name
    gcc -o $t $f   # Try to compile
    if [[ "$?" -ne 0 ]]; then
        rm $f
    fi
done

相关内容

  • 没有找到相关文章