In Octave I can suppress or hide the output of an instruction adding a semicolon to the end of a line:
octave:1> exp([0 1])
ans = [ 1.0000 2.7183 ]
octave:2> exp([0 1]);
octave:3>
Now, how can I suppress the output if the function displays text (e.g. using disp()
or print()
) before returning its value? In other words, I want to be able to do this:
disp("Starting...");
% hide text the may get displayed after this point
% ...
% show all text again after this point
disp("Done!");
It's a very old question, but still, I've encountered the same problem and here is the trick that can help. One can use
evalc
to wrap a problematic function call. E.g. you have a code:Now you can do it:
and make it silent.
Funny, but it even works with other
eval
inside. I mean we can have:which is verbose. Now:
and this is not.
You can modify the
PAGER
variable (which is now a function) to redirect standard output. On Unix systems, you can redirect it to/dev/null
. On Windows, I tried simply redirecting to a Python program that does nothing, and it works decently. (Basically, any program that ignores the input will do)You can just change it back after you're done. And maybe encapsulate this whole procedure in a function.
You can also simply run your scripts non-interactively, and redirect the output normally.
A quick hack of your problem and maybe not even worth mentioning is overloading the
disp
function like so:Then the original
disp
function is not called but yours instead in which no output is generated.I also tried to somehow redirect
stdout
of octave, but unsuccessful. I hope that this dirty solution maybe will suffice in your situation^^