Я приспосабливаю часть своего кода от Bash к C++, и я понятия не имею, почему это всегда возвращает FALSE.
#include <iostream>
#include <stdlib.h>
int main() {
if ( system ("grep -q zswap.enabled=1 /etc/default/grub") ) {
std::cout << " zswap.enabled=1 ?: Yes\n";
}
else {
std::cout << " zswap.enabled=1 ?: No\n";
}
return 0;
}
Поскольку Bash интерпретирует 0 как "успех", а C++ интерпретирует его как "ложное". Это историческая вещь, которая раздражает, но отнюдь не самая неприятная вещь, с которой вы столкнетесь при переносе длинных сценариев оболочки на C/C++.