How can I update global variable within a loop from outside the loop?
You have multiple problems here. First one:

You have a global variable:

unsigned int frqON;


However in your exec function you're creating a variable of the same name and writing to it. This doesn't change the global variable.

else if (strcmp_P(command, PSTR("ReportFRQ")) == 0) {
       //creates new local variable "frqOn" which overshadows global variable
       int frqON = atoi(strsep(&amp;cmdline, " "));
       Serial.println(frqON);    
} 


To solve this and change the global variable, simply omit the int decleration.

Also your if check is wrong:

if (frqON = 1) {
        frq=FreqCounter::f_freq;            // read result
       if (frq&lt;1) Serial.println("OFF");
       if (frq&gt;1) Serial.println(frq); 
 }


When you do if(frqOn = 1) you set the variable frqOn to 1. You however want to compare the values, i.e. use the comparison operator ==.