$this
относится к текущему классу объекта, self
относится к текущему классу (не объекту). Класс - это план объекта. Итак, вы определяете класс, но создаете объекты.
Таким образом, другими словами, используйте self for static
и this for none-static members or methods
.
также в дочернем / родительском сценарии self / parent
в основном используется для идентификации дочерних и родительских классов и методов класса.
if gcc helloworld.c -o helloworld; then
echo "Success!";
else
echo "Failure";
fi
You want bash to test the return code, not the output. Your code captures stdout, but ignores the value returned by GCC (ie the value returned by main()).
Your condition should be:
if [ $? -ne 0 ]
GCC will return zero on success, or something else on failure. That line says "if the last command returned something other than zero."
Чтобы определить разницу между полностью чистой компиляцией и компиляцией с ошибками, сначала выполните обычную компиляцию и проверьте $ ?. Если не ноль, компиляция не удалась. Затем выполните компиляцию с параметром -Werror (предупреждения рассматриваются как ошибки). Test $? - если 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