代码之家  ›  专栏  ›  技术社区  ›  Tyler

如何检查gcc在Bash中是否失败、返回警告或成功?

  •  6
  • Tyler  · 技术社区  · 17 年前

    #!/bin/sh
    
    string=$(gcc helloworld.c -o helloworld)
    
    if [ string -n ]; then
        echo "Failure"
    else
        echo "Success!"
    fi
    

    这只会检查它是否成功(失败或编译时出现警告)。

    -n表示“不为空”。

    谢谢

    如果不清楚,这是行不通的。

    3 回复  |  直到 8 年前
        1
  •  20
  •   RichieHindle    17 年前

    你的情况应该是:

    if [ $? -ne 0 ]
    

        2
  •  18
  •   How Chen    13 年前
    if gcc helloworld.c -o helloworld; then 
    echo "Success!";
    else 
    echo "Failure"; 
    fi
    

    您希望bash测试返回代码,而不是输出。您的代码捕获stdout,但忽略GCC返回的值(即main()返回的值)。

        3
  •  12
  •   nobody    17 年前

    要区分完全干净编译和有错误编译,首先要正常编译并测试$?。如果非零,则编译失败。接下来,使用-Werror(警告被视为错误)选项编译。测试$?-如果为0,则编译时不会出现警告。如果非零,则编译时会显示警告。

    前任:

    gcc -Wall -o foo foo.c
    if [ $? -ne 0 ]
    then
        echo "Compile failed!"
        exit 1
    fi
    
    gcc -Wall -Werror -o foo foo.c
    if [ $? -ne 0 ]
    then
        echo "Compile succeeded, but with warnings"
        exit 2
    else
        echo "Compile succeeded without warnings"
    fi